Build to latest iOS device without upgrading to latest Xcode (1 мин)
Как собирать проект на последней версии iOS без обновления Xcode?
👉 Скачайте файл для поддержки последней версии iOS здесь
👉 Затем поместить его в папку
👉 Перезапустите Xcode
👉 Включите Developer Mode (Settings > Privacy & Security > Developer Mode)
#xcode
Как собирать проект на последней версии iOS без обновления Xcode?
👉 Скачайте файл для поддержки последней версии iOS здесь
👉 Затем поместить его в папку
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/
👉 Перезапустите Xcode
👉 Включите Developer Mode (Settings > Privacy & Security > Developer Mode)
#xcode
🔥4
Introducing The AppIntents Framework — A New Way to Integrate App’s Functionality Into the System
App Intents позволяет сделать доступными для системы контент и фичи ваших приложений. Можно реализовать поиск времени следующей встречи, получать информацию о том, где сейчас заказ или передать данные вашему приложению без его запуска, например, добавить событие в календарь. А затем использовать эти фичи в Shortcuts, Spotlight, Focus filters и Siri.
Intent состоит из:
👉 Metadata - информация об intent'е. Например, название в shortcuts
👉 Parameters - входные данные для intent'а (текст с клавиатуры, слова от Siri и т.д.)
👉 Perform method - для запуска функциональности intent'а
В качестве примера на скрине реализовали учет расходов.
#iOS16
App Intents позволяет сделать доступными для системы контент и фичи ваших приложений. Можно реализовать поиск времени следующей встречи, получать информацию о том, где сейчас заказ или передать данные вашему приложению без его запуска, например, добавить событие в календарь. А затем использовать эти фичи в Shortcuts, Spotlight, Focus filters и Siri.
Intent состоит из:
👉 Metadata - информация об intent'е. Например, название в shortcuts
👉 Parameters - входные данные для intent'а (текст с клавиатуры, слова от Siri и т.д.)
👉 Perform method - для запуска функциональности intent'а
В качестве примера на скрине реализовали учет расходов.
#iOS16
👍4👎1
Create a Scalable SwiftUI MVVM Project
MVVM состоит из следующих компонентов:
👉 View - компонент, который отображает свойства ViewModel, а также отлавливает взаимодействия с пользователям, вызывая ViewModel
👉 View Model инкапсулирует логику, включая вызовы API, обработку событий и данных, а также хранит важные свойства
👉 Model - представление данных. Объекты, созданные из результатов вызовов API
В статье более подробно описано то, как создать настоящий проект на данной архитектуре
#architecture
MVVM состоит из следующих компонентов:
👉 View - компонент, который отображает свойства ViewModel, а также отлавливает взаимодействия с пользователям, вызывая ViewModel
👉 View Model инкапсулирует логику, включая вызовы API, обработку событий и данных, а также хранит важные свойства
👉 Model - представление данных. Объекты, созданные из результатов вызовов API
В статье более подробно описано то, как создать настоящий проект на данной архитектуре
#architecture
❤3👎1
SwiftUI Lifecycle: How to Use SwiftUI for Optimal Performance
Жизненный цикл приложения на SwiftUI делится на следующие этапы:
👉 Инициализация - создание AppDelegate и scene, инициализация вью. Исполняется код, необходимый для старта приложения. Например, загрузка данных от API или создание БД
👉 Layout - определяется расположение вью на экране и их внешний вид. Также здесь можно задать анимации
👉 Рендеринг - на этой фазе определяется взаимодействие вьюшек с пользователем
Используя разные этапы жизненного цикла, вы можете оптимизировать перфоманс вашего приложения
#swiftUI
Жизненный цикл приложения на SwiftUI делится на следующие этапы:
👉 Инициализация - создание AppDelegate и scene, инициализация вью. Исполняется код, необходимый для старта приложения. Например, загрузка данных от API или создание БД
👉 Layout - определяется расположение вью на экране и их внешний вид. Также здесь можно задать анимации
👉 Рендеринг - на этой фазе определяется взаимодействие вьюшек с пользователем
Используя разные этапы жизненного цикла, вы можете оптимизировать перфоманс вашего приложения
#swiftUI
👍2👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Fade the First and Last Elements in a UICollectionView
Как создать fade анимацию для UICollectionView нужно:
👉 В ячейке сделать функцию с анимированным fade'ом
👉 Во viewController'е реализуем
где получаем видимые ячейки
а затем проверяем, видимы ли они целиком
Если нет, то активируем анимацию в ячейке
#UI
Как создать fade анимацию для UICollectionView нужно:
👉 В ячейке сделать функцию с анимированным fade'ом
func updateCell(faded: Bool, animated: Bool = true)
👉 Во viewController'е реализуем
func scrollViewDidScroll(_ scrollView: UIScrollView)
,где получаем видимые ячейки
self.collectionView.indexPathsForVisibleItems
а затем проверяем, видимы ли они целиком
collectionView.bounds.contains(cellRect)
Если нет, то активируем анимацию в ячейке
#UI
❤3👎1
New in SwiftUI 4: Share Sheet with ShareLink
Учимся показывать ShareSheet по кнопке с превью на SwiftUI
#swiftUI
Учимся показывать ShareSheet по кнопке с превью на SwiftUI
#swiftUI
👍2
По случаю пятницы обзор статей о "токсичной продуктивности" в мире IT.
👉 Обязан ли разработчик развиваться? Популярно мнение, что разработчик обязан иметь блог, пет проект и выучить 10 языков программирования. Синдром самозванца и выгорание стали основой индустрии.
Вы не обязаны развиваться. Учиться, развиваться нужно вдумчиво и постепенно — умеренность защитит вашу психику и приведёт к лучшим результатам. Если вы уже выгорели — прекратите заниматься развитием и потратьте свои ресурсы на восстановление.
👉 Разработчики: не перерабатывайте. Люди, которые работают сверхурочно, — идеалисты. Они верят в систему. Оппортунисты, которые заполняют пробелы в способности компании зарабатывать деньги, в конечном итоге получают более высокие зарплаты и карьерный рост.
👉 Правило 3-х часов: Сколько нужно работать в день. Автор предлагает выделять 3 часа концентрации и внимания на работу, как ключ к победе над выгоранием
#softskills
👉 Обязан ли разработчик развиваться? Популярно мнение, что разработчик обязан иметь блог, пет проект и выучить 10 языков программирования. Синдром самозванца и выгорание стали основой индустрии.
Вы не обязаны развиваться. Учиться, развиваться нужно вдумчиво и постепенно — умеренность защитит вашу психику и приведёт к лучшим результатам. Если вы уже выгорели — прекратите заниматься развитием и потратьте свои ресурсы на восстановление.
👉 Разработчики: не перерабатывайте. Люди, которые работают сверхурочно, — идеалисты. Они верят в систему. Оппортунисты, которые заполняют пробелы в способности компании зарабатывать деньги, в конечном итоге получают более высокие зарплаты и карьерный рост.
👉 Правило 3-х часов: Сколько нужно работать в день. Автор предлагает выделять 3 часа концентрации и внимания на работу, как ключ к победе над выгоранием
#softskills
🔥6👍1
Пишем библиотеку для запроса оценки в AppStore
В продвижении приложения очень важную роль играет рейтинг приложения в AppStore. Показ запроса на оценку возможен только три раза в год, при условии что изменилась версия приложения и пользователь не отключил запрос оценки в настройках iOS.
Поэтому очень важно не потратить заветные три попытки впустую. В статье детали реализации модуля для удобного отображения запроса на оценку: ссылка на GitHub
#tools #appStore
В продвижении приложения очень важную роль играет рейтинг приложения в AppStore. Показ запроса на оценку возможен только три раза в год, при условии что изменилась версия приложения и пользователь не отключил запрос оценки в настройках iOS.
Поэтому очень важно не потратить заветные три попытки впустую. В статье детали реализации модуля для удобного отображения запроса на оценку: ссылка на GitHub
#tools #appStore
👍4👎1
Логи в iOS, эпизод 1: os_log
Console.app - специальное приложение для логов, встроенное в MacOS. Для поиска логов по приложению, в правом верхнем углу введите название приложения. В фильтрах указываем Library, тип матчинга Equals.
В Console.app не будут попадать принты. Их нужно заменить на os_log(), с уровнем логгирования, отличным от .debug. По уровню также можно настраивать фильтры. На скрине пример логирования с указанием модуля, файла и строчки.
#tools
Console.app - специальное приложение для логов, встроенное в MacOS. Для поиска логов по приложению, в правом верхнем углу введите название приложения. В фильтрах указываем Library, тип матчинга Equals.
В Console.app не будут попадать принты. Их нужно заменить на os_log(), с уровнем логгирования, отличным от .debug. По уровню также можно настраивать фильтры. На скрине пример логирования с указанием модуля, файла и строчки.
#tools
👍3👎1
WebView: забыть нельзя интегрировать
При разработке мобильного приложения iOS или Android рано или поздно может встать вопрос: «Реализовать фичу на WebView или же нативно?».
Плюсы:
👉 Сокращение общих затрат на разработку и TTM
👉 Синхронный Update на пользователей
👉 Возможности для команд без нативных разработчиков
Минусов довольно много, вот некоторые из них:
👉 Нет офлайн режима и продолжительность загрузки
👉 Проблемы с локальным хранением данных и работой в фоне
👉 Неконсистентность дизайна, проблемы с UI и навигацией
👉 Проблемы интеграции, версионирования, UI-тестирования
Когда использование WebView может быть уместно
👉 MVP и эксперимент
👉 Техническая невозможность реализовать иначе
👉 Фича максимально обособлена
👉 Простая задача
#разработка
При разработке мобильного приложения iOS или Android рано или поздно может встать вопрос: «Реализовать фичу на WebView или же нативно?».
Плюсы:
👉 Сокращение общих затрат на разработку и TTM
👉 Синхронный Update на пользователей
👉 Возможности для команд без нативных разработчиков
Минусов довольно много, вот некоторые из них:
👉 Нет офлайн режима и продолжительность загрузки
👉 Проблемы с локальным хранением данных и работой в фоне
👉 Неконсистентность дизайна, проблемы с UI и навигацией
👉 Проблемы интеграции, версионирования, UI-тестирования
Когда использование WebView может быть уместно
👉 MVP и эксперимент
👉 Техническая невозможность реализовать иначе
👉 Фича максимально обособлена
👉 Простая задача
#разработка
👍3👎1
How to create Rounded Corners Button in UIKit
В iOS 15, появились новые способы задать скругления кнопки через UIButton.Configuration:
👉 Через встроенный стиль со скругленными углами UIButton.Configuration.filled()
👉 Если дефолтное скругление не устраивает, можно задать cornerStyle у UIButton.Configuration (примеры на скрине)
👉 Если нужно задать определенное значение скругления, используйте configuration.background.cornerRadius, а затем установите configuration.cornerStyle в .fixed
#UI
В iOS 15, появились новые способы задать скругления кнопки через UIButton.Configuration:
👉 Через встроенный стиль со скругленными углами UIButton.Configuration.filled()
👉 Если дефолтное скругление не устраивает, можно задать cornerStyle у UIButton.Configuration (примеры на скрине)
👉 Если нужно задать определенное значение скругления, используйте configuration.background.cornerRadius, а затем установите configuration.cornerStyle в .fixed
#UI
👎3👍2
How to check if String is Number in Swift
Способы проверить, что строка является числом:
👉 Символы 0-9 через
👉 Больше символов: (๑๒๓, например)
👉 Еще больше символов ("⅚", "㊈"):
#swift
Способы проверить, что строка является числом:
👉 Символы 0-9 через
CharacterSet(charactersIn: self).isSubset(of: digitsCharacters)
, либо регулярку "^[0-9]*$"
👉 Больше символов: (๑๒๓, например)
CharacterSet(charactersIn: "искомая строка").isSubset(of: CharacterSet.decimalDigits)
👉 Еще больше символов ("⅚", "㊈"):
"искомая строка".allSatisfy { character in character.isNumber }
#swift
👎4🔥2
Replacing if let in Swift 5.7
В Swift 5.7 был упрощен синтаксис выражений if let и guard let. Теперь так:
В статье регулярка для быстрого рефакторинга
#swift
В Swift 5.7 был упрощен синтаксис выражений if let и guard let. Теперь так:
var
name: String? = "Linda"
if let name {
print("Hello, \(name)!")
}
В статье регулярка для быстрого рефакторинга
#swift
👍5👎2
Build Time Optimizations (Xcode)
Авторы статьи смогли сократить время билда на 21%. Приведем их советы по оптимизации кода:
1. Используйте "let", где возможно
2. Добавляйте final к классам
3. Явно объявляйте тип и избейгайте инициалзации через вызов
4. Делайте extension'ы приватными
5. Используете объявление кейсов перечислений с типом
6. Разбивайте сложные выражения на части
7. Избегайте лишних кастингов
8. Предпочтитайте if let вместо разворачивания через ??
#optimization
Авторы статьи смогли сократить время билда на 21%. Приведем их советы по оптимизации кода:
1. Используйте "let", где возможно
2. Добавляйте final к классам
3. Явно объявляйте тип и избейгайте инициалзации через вызов
.init
4. Делайте extension'ы приватными
5. Используете объявление кейсов перечислений с типом
6. Разбивайте сложные выражения на части
7. Избегайте лишних кастингов
8. Предпочтитайте if let вместо разворачивания через ??
#optimization
👍7👎1
Integrate SwiftLint to the iOS project
Чтобы добавить SwiftLint к себе в проект нужно всего лишь...
👉 Добавить в Podfile: pod 'SwiftLint'
👉 Build Phases (Linting): ${PODS_ROOT}/SwiftLint/swiftlint
👉 Добавить правила в .swiftlint.yml
#tools
Чтобы добавить SwiftLint к себе в проект нужно всего лишь...
👉
👉
#tools
😁5👎1🤩1
«Счастье разработчиков 2022» — отчет ZenHub
Опрос 380 англоговорящих разработчиков из разных стран показал:
👉 Наиболее приоритетны для команд разработчиков — бизнес-цели
👉 Вызовы в ежедневном программировании — безопасность, быстродействие и уменьшение технического долга
👉 Только 8% работает над одним проектом, большинство работает более 40 часов в неделю
👉 В компании важны баланс работа/личная жизнь, качество проектов и размер зарплаты
👉 Наибольшее помехи продуктивности — меняющиеся требования, ожидание обратной связи и неясные сроки сдачи проектов.
#оффтоп
Опрос 380 англоговорящих разработчиков из разных стран показал:
👉 Наиболее приоритетны для команд разработчиков — бизнес-цели
👉 Вызовы в ежедневном программировании — безопасность, быстродействие и уменьшение технического долга
👉 Только 8% работает над одним проектом, большинство работает более 40 часов в неделю
👉 В компании важны баланс работа/личная жизнь, качество проектов и размер зарплаты
👉 Наибольшее помехи продуктивности — меняющиеся требования, ожидание обратной связи и неясные сроки сдачи проектов.
#оффтоп
👍3👎2
Работа в мобильной разработке 2022 — опрос RayWenderlich.com
Всего в опросе приняло участие 1,257 человек. Вот некоторые его интересные результаты:
👉 Зарплата на карте — зеленое больше, красное меньше
👉 56% разработчиков создает собственные приложения в свободное время
👉 Доходы пет-проектов на 2 изображении
👉 Зарплата по языкам программирования — традиционно Objective-C лидирует, а на втором месте C++
#оффтоп
Всего в опросе приняло участие 1,257 человек. Вот некоторые его интересные результаты:
👉 Зарплата на карте — зеленое больше, красное меньше
👉 56% разработчиков создает собственные приложения в свободное время
👉 Доходы пет-проектов на 2 изображении
👉 Зарплата по языкам программирования — традиционно Objective-C лидирует, а на втором месте C++
#оффтоп
👍4👎1