iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT
12.4K subscribers
654 photos
64 videos
3.95K links
Самые интересные статьи, видео и новости, связанные с iOS разработкой. Не больше трёх материалов в день.

Лучшее iOS сообщество в Телеге: @iosgt

Размещение рекламы: @tanyasanovna
Download Telegram
Live Activity доступны в Beta

В beta 4 версии iOS 16 подвезли Live Activities – виджеты, которые отображаются на Lock-скрине, и отображают информацию из вашего приложения в реальном времени. Для их разработки можно использовать новый фреймворк ActivityKit.

Важно – Live Activities не попадут в стабильный релиз iOS 16, а докатятся в одном из следующих обновлений.
Релиз библиотеки Get 1.0

Get – аналог Alamofire, написанный с использованием async/await. Основные преимущества – в библиотеке сильно меньше кода, и есть много классных интеграций с инструментами вроде Pulse и CreateAPI.
Расширение функциональности UIViewController через паттерн Pluginable

На многих экранах требуется реализовывать одинаковую логику – обрабатывать клавиатуру, показывать ошибки, делать всякие штуки, связанные с жизненным циклом контроллера. В статье рассказывается, как завести базовый контроллер, который даст возможность расширения функциональности своих дочерних классов на основе плагинов.
Открытый воркшоп по Swift Charts

Я уже публиковал десяток статей про то, как работать со Swift Charts. Но самый лучший способ научиться чему-то – сходить на воркшоп эксперта с релевантным опытом, а затем повторить все задания самому. Подключайтесь 4 августа в 20:00 на вебинар Антона Марунько, и вкатитесь в красивые графики!

Вебинар является частью онлайн-курса «iOS Developer» от OTUS.
iOSRef – подборка шпаргалок по iOS разработке

📱Особенности каждого девайса: разрешение, тип экрана, железо, доступные версии ОС
🛠Инструменты: HEX to UIColor, NSDateFormatter, Auto Layout helper
🔗Ссылки на различные гайдлайны
Compile-time проверка URL

Если вам не нравится постоянно использовать guard let для проверки валидности URL, попробуйте этот Swift Package. Он проверяет валидность URL прямо во время компиляции.
Малоизвестные возможности цветовой палитры в Xcode

- Палитру можно вызывать не только через меню инструментов, но и через цветовые литералы прямо из кода
- Можно создавать свои палитры цветов и переиспользовать их между проектами
- Цветам в палитре можно задавать названия и использовать их как литералы
- Можно прямо в Xcode сгенерировать свою цветовую палитру на основе любого изображения
Как работать с типом Measurement в Swift Charts

Foundation предоставляет удобный тип для работы с любым типом измерений – Measurement. Но по умолчанию он пока что не работает со Swift Charts. В статье рассматривается несколько вариантов, как решить эту проблему.
TableView: reload vs reconfigure

Начиная с iOS 15 в UITableView и UICollectionView появился метод reconfigure. В отличие от reload он не пересоздает ячейку с нуля, а обновляет существующую. По ссылке можно прочитать детали про алгоритм его работы.
Советы по тестированию кастомных Codable инициализаторов

- Кастомную сериализацию нужно тестировать так же, как и другую бизнес-логику
- Кастомный codable init лучше объявлять в экстеншне, чтобы не потерять memberwise init, генерируемый компилятором
- Проверочный объект создаете вручную через memberwise init, а проверяемый – на основе JSON
- Чтобы получить полезный аутпут теста о том, что конкретно отличается в объектах, попробуйте библиотеку Difference
Как включить Stage Manager в iPad симуляторе

Стандартный ответ на вопрос – внести правки в .GlobalPreferences.plist на симуляторе, что не очень удобно. Но есть вариант попроще: xcrun simctl spawn booted defaults write -g SBChamoisWindowingEnabled -bool true.
Loco – линтер для Localization.strings

Линтер умеет делать следующие проверки:
- Непереведенные строки в Swift коде
- Пропущенные ключи в каких-то из локализаций
- Ключи-дубликаты
- Неиспользуемые ключи
Подробный пост про Grids в SwiftUI

👀Сравнение разных типов контейнеров
☎️Разбор настройки Spacing, Alignment, Width/Height
✡️Реализация шестиугольных ячеек
💻Семпловый проект Grid Trainer, в котором можно поиграться самостоятельно со всеми настройками
Когда вы интегрируете рекламные SDK в приложение, готовьтесь: будет много проблем. Не всегда очевидных. Но всегда сильно раздражающих.

Ребята из FUNCORP подготовили список таких «граблей» — а заодно объяснили, как работает реклама в приложениях под капотом. Бонус: в статье есть код, который решает самые бесячие проблемы.
Читать здесь.
Лайфхак для тестирования готовности приложения к интернационализации строк

Если вы укажете NSDoubleLocalizedStrings в качестве Launch Argument, все строки в приложении автоматически продублируются. Благодаря этому можно посмотреть, как приложение справляется с более длинными строками.

Есть еще несколько способов включить этот режим:
- Scheme Editor -> Application Language -> Double Length Pseudolanguage
- Interface Builder -> Preview Assistant Editor -> Double Length
This media is not supported in your browser
VIEW IN TELEGRAM
Туториал по реализации клона Apple Calculator на SwiftUI

- Разбор того, как правильно декомпозировать калькулятор на View слое
- Поэтапная реализация всех компонентов калькулятора
- Исходники на GitHub
Пошаговая реализация анимации с melting эффектом

Разбор сложных анимаций – это всегда интересно. В этой статье рассказывается, как сделать анимацию перехода между экранами с «плавящим» эффектом.
SwiftUI не нужен MVVM

Автор сравнивает возможности SwiftUI с майрософтовским WPF, из чего делает вывод, что в SwiftUI ViewModel в большинстве случаев лишняя сущность.
Неочевидные особенности разработки Live Activity

- Для запуска Live Activity из приложения не требуется явное подтверждение пользователя
- Приложение должно находиться в foreground для старта Activity
- Чтобы Activity обновлялась, нужно либо держать приложение в бэкграунде, либо использовать пуши
- Нет способа подстроить внешний вид и цветовую палитру под обои
- Анимации почти не кастомизируются