SwiftUI Layout Protocol: как работать с версткой в SwiftUI
Хотя создавать базовый лэйаут несложно, существует множество вариантов, с которыми могут быть трудности.
Ниже будут рассмотрены не только типичные примеры для Layout, но и ряд важных моментов для формирования базы.
Весь материал состоит из двух больших частей, для удобства они сгруппированы по темам.
Первая часть:
➡️ Что такое Layout Protocol?
➡️ Разбор View Hierarchy.
➡️ Первая реализация лэйаута.
➡️ Выравнивание контейнеров.
➡️ Кастомные значения: LayoutValueKey.
➡️ Дефолтный Spacing.
➡️ Для чего нужен Spacer().
➡️ Layout Cache.
➡️ Переключение между лэйаутами с помощью AnyLayout.
➡️ Выводы.
Вторая часть:
➡️ Пусть начнётся веселье!
➡️ Кастомные анимации.
➡️ Двунаправленные кастомные значения.
➡️ Избежание зацикливания и крашей.
➡️ Рекурсивные лэйауты.
➡️ Композиция лэйаутов.
➡️ Еще один пример композиции: Интерполяция.
➡️ Использование binding-параметров.
➡️ Полезный инструмент отладки.
➡️ Заключительные мысли.
🐱 Больше разборов, примеров анимаций, алгоритмов и архитектур — доступно вот здесь.
😃 iOS IQ
Хотя создавать базовый лэйаут несложно, существует множество вариантов, с которыми могут быть трудности.
Ниже будут рассмотрены не только типичные примеры для Layout, но и ряд важных моментов для формирования базы.
Весь материал состоит из двух больших частей, для удобства они сгруппированы по темам.
Первая часть:
Вторая часть:
Please open Telegram to view this post
VIEW IN TELEGRAM
Новый раздел в Develop in Swift от Apple
🤩 Тим Снит сегодня анонсировал новый набор туториалов для тех, кто только делает первые шаги в программировании с помощью Swift и SwiftUI.
Для понимания даже не нужен предварительный опыт написания кода в целом, так что эти материалы могут стать отличным стартом.
📖 Обучающие материалы Apple доступны здесь.
😃 iOS Dev • Разбор алгоритмов
Для понимания даже не нужен предварительный опыт написания кода в целом, так что эти материалы могут стать отличным стартом.
📖 Обучающие материалы Apple доступны здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Важное обновление AppStore Connect, новый сервис Apple Crash +
В дополнение к последним изменениям, касающимся проверки доступа к API и необходимости работы с privacy manifests в эппл сегодня выкатили новую политику проверки приложений.
Теперь review team будет проверять приложения только 3 раза после каждого реджекта. Все остальные проверки доступны платно.
Доступно два вида подписки на Apple Crash +:
💵 $ 9.99 в месяц – Apple Crash + безлимитные проверки приложений после первого реджекта.
💵 $ 19.99 в месяц – все то же самое, что и в первой версии, но проверка приложений будет в течение часа после загрузки билда.
Видимо, изменения вызваны упущенной выгодой в новых альтсторах.
📺 Детально изменения доступны на новом канале эпла в YouTube.
😃 iOS Dev
В дополнение к последним изменениям, касающимся проверки доступа к API и необходимости работы с privacy manifests в эппл сегодня выкатили новую политику проверки приложений.
Теперь review team будет проверять приложения только 3 раза после каждого реджекта. Все остальные проверки доступны платно.
Доступно два вида подписки на Apple Crash +:
Видимо, изменения вызваны упущенной выгодой в новых альтсторах.
📺 Детально изменения доступны на новом канале эпла в YouTube.
Please open Telegram to view this post
VIEW IN TELEGRAM
TextView и что он скрывает
Уже более 9 лет Михаил Лапушкин работает над своим текстовым редактором. За это время он прошёл огромный путь, и в двух масштабных статьях делится тем, с какими подводными камнями ему пришлось столкнуться и, например, почему в приложении нет сторонних зависимостей.
📖 В первой части Михаил рассказывает свою увлекательную историю приложения (об архитектуре, релизах, дебаге и не только).
📖 А во второй делится хардкорными вещами: работой с атрибутами, стилями, перфомансом, математикой для отрисовки и многим другим.
😃 iOS Dev • 🐱 Узнать больше об архитектурах
Уже более 9 лет Михаил Лапушкин работает над своим текстовым редактором. За это время он прошёл огромный путь, и в двух масштабных статьях делится тем, с какими подводными камнями ему пришлось столкнуться и, например, почему в приложении нет сторонних зависимостей.
📖 В первой части Михаил рассказывает свою увлекательную историю приложения (об архитектуре, релизах, дебаге и не только).
📖 А во второй делится хардкорными вещами: работой с атрибутами, стилями, перфомансом, математикой для отрисовки и многим другим.
Please open Telegram to view this post
VIEW IN TELEGRAM
Создание 3D-элементов для iOS и VisionOS
Meng To выпустил большое обучающее видео по работе со Spline.
📺 В этом видео можно узнать о следующих вещах:
1️⃣ Создание интерактивных 3D-сцен для приложений iOS и экспорт в Xcode 15+.
2️⃣ Работа над элементами для visionOS.
3️⃣ Пример создания 3D-иконок приложений и динамических анимаций интерфейса.
4️⃣ Расширенные возможности Spline, такие как частицы и физика для более реалистичных эффектов.
5️⃣ Введение в 3D-моделирование.
😃 iOS Dev
Meng To выпустил большое обучающее видео по работе со Spline.
📺 В этом видео можно узнать о следующих вещах:
1️⃣ Создание интерактивных 3D-сцен для приложений iOS и экспорт в Xcode 15+.
2️⃣ Работа над элементами для visionOS.
3️⃣ Пример создания 3D-иконок приложений и динамических анимаций интерфейса.
4️⃣ Расширенные возможности Spline, такие как частицы и физика для более реалистичных эффектов.
5️⃣ Введение в 3D-моделирование.
Please open Telegram to view this post
VIEW IN TELEGRAM
Шаринг файлов с кастомными типами в iOS
📁 Если вы планируете использовать не только стандартные типы файлов на iOS, но и заставить систему распознать файл и открыть его в вашем приложении, вы можете использовать типы документов и идентификаторы экспортируемых типов.
Это очень полезно при создании приложений для работы с документами, позволяющих экспортировать данные для резервного копирования или переноса между платформами.
📖 Вот тут есть инструкция с примером кода, как это сделать.
🐱 А в ноушне добавил пост, как можно переносить данные между своими приложениями в целом (около десятка вариантов).
😃 iOS Dev
Это очень полезно при создании приложений для работы с документами, позволяющих экспортировать данные для резервного копирования или переноса между платформами.
📖 Вот тут есть инструкция с примером кода, как это сделать.
Please open Telegram to view this post
VIEW IN TELEGRAM
Apple Store Ковент-Гарден (Лондон)
Посещение необычных или старых сторов эпл - одна из моих небольших традиций при поездках в другие страны.
📸 В этот раз делюсь фотосетом одного из флагманских магазинов компании в Великобритании.
Трехэтажный магазин, расположенный в здании, где раньше находился Rock Garden, привлекает огромное количество туристов.
Каждое помещение посвящено одной из линеек продукции Apple, а главный двор полностью отдан под большие дубовые столы с десятками планшетов iPad, которые покупатели смогут опробовать.
После оплаты они могут посетить «комнату настройки», где сотрудники Apple распакуют и настроят их новый гаджет.
Забавный факт, даже если у компании что-то пойдет не так, то на продаже этой недвижимости они смогут заработать невероятно крупную сумму денег, ведь адрес этого красивого здания - London, The Plaza, 1.
Около десяти лет назад в Ковент-Гардене было даже больше посетителей, чем на пятом авеню в Нью-Йорке!
Другие истории об эпл сторах:
🍏 Apple Store Marunouchi в Токио.
🍏 Apple Store в Купертино.
🍏 Apple Tower Theater в Лос-Анджелесе.
😃 iOS Dev
Посещение необычных или старых сторов эпл - одна из моих небольших традиций при поездках в другие страны.
📸 В этот раз делюсь фотосетом одного из флагманских магазинов компании в Великобритании.
Трехэтажный магазин, расположенный в здании, где раньше находился Rock Garden, привлекает огромное количество туристов.
Каждое помещение посвящено одной из линеек продукции Apple, а главный двор полностью отдан под большие дубовые столы с десятками планшетов iPad, которые покупатели смогут опробовать.
После оплаты они могут посетить «комнату настройки», где сотрудники Apple распакуют и настроят их новый гаджет.
Забавный факт, даже если у компании что-то пойдет не так, то на продаже этой недвижимости они смогут заработать невероятно крупную сумму денег, ведь адрес этого красивого здания - London, The Plaza, 1.
Около десяти лет назад в Ковент-Гардене было даже больше посетителей, чем на пятом авеню в Нью-Йорке!
Другие истории об эпл сторах:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🕹 В App Store разрешили эмуляторы ретро-игр
Теперь разработчики могут выкладывать и такой тип приложений, а пользователи iPhone смогут устанавливать себе эмуляторы напрямую из App Store, а не использовать для этого сторонние магазины приложений, которые ранее разрешили в ЕС.
До этого любые эмуляторы игр были под запретом. Единственным вариантом было юзать джейлбрейк или искать альтернативные пути.
Важная деталь — эмуляторы должны соответствовать остальным правилам, включая запрет на пиратские игры.
📖 Детально изменения гайдлайнов здесь.
😃 iOS Dev
Теперь разработчики могут выкладывать и такой тип приложений, а пользователи iPhone смогут устанавливать себе эмуляторы напрямую из App Store, а не использовать для этого сторонние магазины приложений, которые ранее разрешили в ЕС.
До этого любые эмуляторы игр были под запретом. Единственным вариантом было юзать джейлбрейк или искать альтернативные пути.
Важная деталь — эмуляторы должны соответствовать остальным правилам, включая запрет на пиратские игры.
📖 Детально изменения гайдлайнов здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Method swizzling в Swift: определение, примеры, плюсы и минусы
Method swizzling — это техника, которая позволяет изменять или заменять реализацию существующего метода в рантайме.
Она включает в себя обмен реализациями двух методов, обычно для добавления или изменения поведения без модификации исходного класса.
😎 Firebase, пожалуй, самый известный SDK, который юзает свиззлинг. Например, FirebaseAnalytics изменяет методы жизненного цикла в
Pulse изменяет инициализатор URLSession для трекинга сетевой активности, проходящей через URLSession.
А в целом, пул применения можно расширить до следующих примеров:
1️⃣ Расширение или изменение поведения существующих методов во фреймворках или сторонних либах.
2️⃣ Отладка или логирование, например, отслеживание вызовов или измерение производительности.
3️⃣ Аутентификация или кэширование, в нескольких методах или классах.
✅ В ноушне я добавил примеры кода, плюсы и минусы (и когда лучше избегать этого способа), а также несколько полезнейших источников для того, чтоб разобраться с Method Swizzling.
😃 iOS Dev
Method swizzling — это техника, которая позволяет изменять или заменять реализацию существующего метода в рантайме.
Она включает в себя обмен реализациями двух методов, обычно для добавления или изменения поведения без модификации исходного класса.
UIViewController
для отправки событий аналитики.Pulse изменяет инициализатор URLSession для трекинга сетевой активности, проходящей через URLSession.
А в целом, пул применения можно расширить до следующих примеров:
1️⃣ Расширение или изменение поведения существующих методов во фреймворках или сторонних либах.
2️⃣ Отладка или логирование, например, отслеживание вызовов или измерение производительности.
3️⃣ Аутентификация или кэширование, в нескольких методах или классах.
Please open Telegram to view this post
VIEW IN TELEGRAM
Apple показал Ferret-UI для распознавания мобильных интерфейсов
После обучения на собранных массивах данных Ferret-UI демонстрирует отличное понимание интерфейса и способность выполнять открытые инструкции.
Ferret-UI не только превосходит большинство опенсорсных MLLM, но и превосходит GPT-4V по всем элементарным UI-задачам.
🔗 Целиком исследование доступно здесь.
Вероятно, как минимум, это расширит области по работе с доступностью для определённых групп пользователей, а как максимум, может приведёт нас к этому.
К слову, у гугла есть также есть объёмное исследование для работы с интерфейсом.
😃 iOS Dev
После обучения на собранных массивах данных Ferret-UI демонстрирует отличное понимание интерфейса и способность выполнять открытые инструкции.
Ferret-UI не только превосходит большинство опенсорсных MLLM, но и превосходит GPT-4V по всем элементарным UI-задачам.
Вероятно, как минимум, это расширит области по работе с доступностью для определённых групп пользователей, а как максимум, может приведёт нас к этому.
К слову, у гугла есть также есть объёмное исследование для работы с интерфейсом.
Please open Telegram to view this post
VIEW IN TELEGRAM
Benchmark - инструмент для измерения производительности Swift
Производительность, безусловно, ключевая характеристика и для приложений, и для фреймворков.
Benchmark позволяет легко чекать множество показателей: загрузку процессора, ARC-трафика, использование памяти, ресурсов оси, таких как потоки и системные вызовы, а также полностью кастомные счетчики метрик.
Его основная функция - именно замер производительности, а другие средства (Instruments, DTrace, Heaptrack, Leaks, Sample) могут быть использованы для поиска причин.
🛠 Вот тут есть сылка на репозиторий и статья с примерами на сайте swift.org.
📖 А вот здесь в канале разбор инструмента от ETTrace от Emerge.
✅ А в iOS IQ есть огромный раздел c советами по повышению производительности приложений (как бороться с лагами, шаги по поиску утечек и многое другое).
😃 iOS Dev
Производительность, безусловно, ключевая характеристика и для приложений, и для фреймворков.
Benchmark позволяет легко чекать множество показателей: загрузку процессора, ARC-трафика, использование памяти, ресурсов оси, таких как потоки и системные вызовы, а также полностью кастомные счетчики метрик.
Его основная функция - именно замер производительности, а другие средства (Instruments, DTrace, Heaptrack, Leaks, Sample) могут быть использованы для поиска причин.
🛠 Вот тут есть сылка на репозиторий и статья с примерами на сайте swift.org.
📖 А вот здесь в канале разбор инструмента от ETTrace от Emerge.
Please open Telegram to view this post
VIEW IN TELEGRAM
Создание серчбара в стиле Apple
⭐️ Каждый, кто работал с эпловским серчбаром, знает, как сложно было хэндлить разные кейсы до выхода последних версий iOS, особенно если используется непростая кастомизация.
Во многих приложениях Apple для visionOS, таких как Music, Safari и Apple TV, также есть удобное поле поиска.
Но начиная с версии visionOS 1.1, повторить его визуальное исполнение непросто из-за отсутствия нужного API, хотя и все равно возможно!
📖 В этом материале разработчик объясняет, как можно для этих целей использовать UISearchBar из UIKit (и делится неочевидными сложностями).
😃 iOS Dev
Во многих приложениях Apple для visionOS, таких как Music, Safari и Apple TV, также есть удобное поле поиска.
Но начиная с версии visionOS 1.1, повторить его визуальное исполнение непросто из-за отсутствия нужного API, хотя и все равно возможно!
📖 В этом материале разработчик объясняет, как можно для этих целей использовать UISearchBar из UIKit (и делится неочевидными сложностями).
Please open Telegram to view this post
VIEW IN TELEGRAM