От viewWillAppear к viewIsAppearing: адаптация пользовательского интерфейса
На WWDC23 Apple представила важное дополнение к жизненному циклу UIViewController:
По факту это революционное решение помогает создавать более отзывчивые и динамичные интерфейсы.
📖 На этих несложных примерах можно понять, почему этот момент стратегически важен, и как именно можно использовать его в приложениях.
😃 iOS Dev
На WWDC23 Apple представила важное дополнение к жизненному циклу UIViewController:
viewIsAppearing
. По факту это революционное решение помогает создавать более отзывчивые и динамичные интерфейсы.
📖 На этих несложных примерах можно понять, почему этот момент стратегически важен, и как именно можно использовать его в приложениях.
Please open Telegram to view this post
VIEW IN TELEGRAM
Искусство работы с Corner Radius: пара трюков и хитростей
ℹ️ Работа со скруглениями едва ли не самая распространенная штука при работе над дизайном приложений.
Базовых скруглений легко добиться, но при работе с несколькими составляющими могут возникнуть трудности.
📖 В этой статье David Yang делится некоторыми несложными шагами при работе с таким дизайном.
😃 iOS Dev
Базовых скруглений легко добиться, но при работе с несколькими составляющими могут возникнуть трудности.
📖 В этой статье David Yang делится некоторыми несложными шагами при работе с таким дизайном.
Please open Telegram to view this post
VIEW IN TELEGRAM
Начиная с весны 2024 года, разработчики будут обязаны включать в приложения новые манифесты и подписи для SDK, которые могут влиять на конфиденциальность пользователей.
Подписи будут нужны, даже если SDK (пока список от Apple как на скриншоте выше) включены в качестве зависимостей.
Любая версия и SDK, которые переупаковывают вышеуказанные, также включены в требования.
Для каждого вида данных понадобится словарь
NSPrivacyCollectedDataType
с ключами:NSPrivacyCollectedDataType
, NSPrivacyCollectedDataTypeLinked
, NSPrivacyCollectedDataTypeTracking
и NSPrivacyCollectedDataTypePurposes
.Все значения должны соответствовать этому списку. Если будут указаны иные варианты, то Xcode не сможет корректно генерить отчёт о конфиденциальности.
Please open Telegram to view this post
VIEW IN TELEGRAM
AsyncPhoto и пример использования для отображения больших фотографий
ℹ️
Можно, например, создать кастомный плейсхолдер и управлять загруженной картинкой с помощью параметра
📖 В этом материале приводится пример использования AsyncImage в случаях, когда нужно уменьшить изображение (в том числе и для экономии памяти).
😃 iOS Dev
AsyncImage
нужен, как и следует из названия, для того, чтобы асинхронно грузить и отображать изображения.Можно, например, создать кастомный плейсхолдер и управлять загруженной картинкой с помощью параметра
content
.📖 В этом материале приводится пример использования AsyncImage в случаях, когда нужно уменьшить изображение (в том числе и для экономии памяти).
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Скрытая особенность typealias
⭐️ Скорее всего, при разработке вы периодически используете
Также как при работе со структурами или классами, мы можем объявлять дженерик-аргументы в
📖 В этой статье разбираются возможности
😃 iOS Dev
typealias
.Также как при работе со структурами или классами, мы можем объявлять дженерик-аргументы в
typealias
(и даже можем ограничить использование только числовых типов, например, с использованием Numeric
).📖 В этой статье разбираются возможности
typealias
на реальных примерах. Please open Telegram to view this post
VIEW IN TELEGRAM
Как и когда использовать Lazy Collections в Swift
➡️ Такие коллекции откладывает вычисления до тех пор, пока они действительно не понадобятся.
И хотя это может быть полезно (например, можно предотвратить выполнение ненужной работы, если элементы в итоге так и не будут запрошены), но у них есть и недостатки.
Условно, если у нас 5 элементов, вряд ли мы получим существенный выигрыш в производительности. Поэтому решение об использовании таких коллекций должно приниматься индивидуально в каждом случае.
📖 А о преимуществах и недостатках можно прочесть здесь.
😃 iOS Dev
И хотя это может быть полезно (например, можно предотвратить выполнение ненужной работы, если элементы в итоге так и не будут запрошены), но у них есть и недостатки.
Условно, если у нас 5 элементов, вряд ли мы получим существенный выигрыш в производительности. Поэтому решение об использовании таких коллекций должно приниматься индивидуально в каждом случае.
📖 А о преимуществах и недостатках можно прочесть здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Приготовил для вас сюрприз ❤️
🔨 Что, если бы Xcode показывал нам статистику по итогам года?
Или, например, мы знали, сколько крашей пофиксили?
☕️ А сколько минут собирались наши проекты?
🤩 Я представил эту альтернативную реальность в стиле Spotify (или других сервисов, как вам удобнее), и делюсь итогами года iOS-разработчика с вами!
😃 iOS Dev • 🐱 Доступ к алгоритмам
Или, например, мы знали, сколько крашей пофиксили?
☕️ А сколько минут собирались наши проекты?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
AsyncStream на реальных примерах: работа с Apple Photos
🧑💻
Apple обычно показывает хорошие способы работы с асинхронным API, но иногда бывают моменты, которые моно улучшить.
Например, автор следующей статьи переосмыслил использование
📖 Вот тут можно посмотреть на этот подход и граничные кейсы.
😃 iOS Dev
AsyncStream
позволяет ожидать последовательность элементов, возвращая их, когда они будут готовы.Apple обычно показывает хорошие способы работы с асинхронным API, но иногда бывают моменты, которые моно улучшить.
Например, автор следующей статьи переосмыслил использование
PHAsset.fetchAssets
с помощью AsyncStream.📖 Вот тут можно посмотреть на этот подход и граничные кейсы.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Создание прогресс-бара в ретро-стиле с использованием CALayers
Создание своих компонентов может быть увлекательно, но практически всегда сопряжено с рядом сложностей.
😎 Наверняка, каждый из нас проектировал и внедрял в проекты те или иные контролы, а некоторые и десятки раз.
Если вам нравится использовать
📖 В ней автор указывает на типичные проблемы, связанные с версткой, анимацией и рисованием, а также предлагает ряд интересных идей, которые могут помочь.
🛠 Окончательный вид и код проекта можно посмотреть здесь.
😃 iOS Dev
Создание своих компонентов может быть увлекательно, но практически всегда сопряжено с рядом сложностей.
Если вам нравится использовать
UIKit
, но вы все еще не знаете, как работать с CALayers
, эта статья будет вам полезна. 📖 В ней автор указывает на типичные проблемы, связанные с версткой, анимацией и рисованием, а также предлагает ряд интересных идей, которые могут помочь.
🛠 Окончательный вид и код проекта можно посмотреть здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Удаление данных в SwiftData
Существует как минимум три способа удалить данные при использовании SwiftData.
📖 В этом обзоре рассматриваются эти варианты и неочевидные моменты.
Другие посты на тему:
1️⃣ Отслеживание изменений данных в SwiftData.
2️⃣ Архитектурный дизайн SwiftData и возможности миграции.
3️⃣ Вопросы и ответы про SwiftData и CoreData.
😃 iOS Dev
Существует как минимум три способа удалить данные при использовании SwiftData.
📖 В этом обзоре рассматриваются эти варианты и неочевидные моменты.
Другие посты на тему:
1️⃣ Отслеживание изменений данных в SwiftData.
2️⃣ Архитектурный дизайн SwiftData и возможности миграции.
3️⃣ Вопросы и ответы про SwiftData и CoreData.
Please open Telegram to view this post
VIEW IN TELEGRAM