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

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

Размещение рекламы: @tanyasanovna
Download Telegram
Главные обновления SwiftUI

👉Больше никакого Combine, вместо него для полписки на изменения используется новый фреймворк Observation.
👉Анимациям теперь можно добавлять completion handler’ы и анимировать изменения по кейфреймам.
👉У ScrollView можно следить за изменением оффсета с помощью модификатора.
👉Можно программно ставить фокус в поле поиска, а также прятать и показывать его.
👉Новые жесты: rotate и magnify.
This media is not supported in your browser
VIEW IN TELEGRAM
Отражение источников света

Интерфейс Vision Pro учитывает источники освещения и слегка отражает их от своей поверхности. Вот пример того, как можно реализовать похожий эффект на SwiftUI, считывая источники освещения с камеры.
Автоматическая генерация символов для цветов и картинок в ассетах

Моя любимая фича нового Xcode – автоматическая генерация констант для цветов и картинок, которые находятся в ассетах. В качестве названия константы используется имя, которое вы задали в каталоге.

Если вы решите отключить их генерацию, используйте флаг ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS в build settings.
Официальный дизайн-кит в Figma от Apple

Начиная с 2017 года, в дизайн-команде Apple крутилась идея опубликовать официальный дизайн-кит в Figma. Спустя пять лет, он наконец появился!

- Куча компонентов, от алертов и уведомлений до навигации
- Шаблоны виджетов
- Макеты поддерживают Dynamic Type
- Встроенные стандартные настройки цветов, стилей и материалов

Дизайн-кит будет постоянно дополняться. Скоро там появится поддержка iOS 17, и компоненты из macOS, tvOS, watchOS и visionOS.
Как реализованы расширения для Raycast

Raycast – это такой Spotlight на стероидах. Одна из основных отличающих его фичей – богатый каталог расширений от коммьюнити.

В статье рассказывается, как команда проектировала и реализовывала поддержку расширений для нативного приложения, какие варианты попробовала, и на какие компромиссы в итоге пошла.
Introspect – библиотека для доступа к внутренним вьюхам SwiftUI

Introspect позволяет обращаться к внутренним UIKit элементам, находящимся под капотом у большинства компонентов SwiftUI. Это нужно, чтобы изменять свойства, которые не видны из SwiftUI напрямую. Например, убрать сепараторы в таблице, или добавить RefreshControl к ScrollView.

Библиотеку безопасно использовать в проде, так как она не обращается к приватным API.
This media is not supported in your browser
VIEW IN TELEGRAM
Пример Scroll Transitions в новом SwiftUI

В SwiftUI появился новый очень простой способ реализовывать анимации при скроллинге таблицы – блок scrollTransition.
This media is not supported in your browser
VIEW IN TELEGRAM
The Composable Architecture в Swift 5.9

Посмотрите на пруф-ов-концепт того, насколько сильно сократится код фичей, написанных по TCA, благодаря макросам и Observability Framework.
Управление и доступность в Vision Pro

Миша Рубанов подбил обзор принципов управления интерфейсом очков и того, как именно там реализованы разные виды accessibility – это просто космос.
Лучшие сессии WWDC

Чтобы вам не пришлось смотреть много десятков сессий, Apple собрали самые важные из них на одной странице. Самая крупная категория, конечно, Spatial Computing.
Лог Q&A про SwiftUI

Одна из обязательных активностей на WWDC – Q&A с инженерами Apple. На ней можно получить комментарии по темам, которые не освещаются в документации. Пролистайте всю дискуссию про SwiftUI – можете найти себе что-то полезное.
Swift OpenAPI package

Вышла альфа версия официального пакета от Apple для генерации сервера и клиента по спеке OpenAPI. Swift на сервере – это не очень интересно, а вот клиент – другое дело.

По спеке генерируются APIProtocol, который содержит в себе все методы API, и Client, структура, которая реализует сгенерированный протокол. Работает все это как поверх URLSession, так и поверх любого другого транспорта.
visionOS SDK доступен для загрузки

Вы спите, а Apple выпускает релизы для вас! Стал доступен Xcode 15 beta 2, в который включены visionOS SDK, Reality Composer Pro, приложение для создания 3D контента для очков, и симулятор новой операционной системы. Вся документация по фреймворкам лежит тут.
Подробный разбор основных изменений в SwiftUI

💅Улучшения ScrollView: постраничная анимация, возможность начинать скролл с нижней границы вьюшки, кастомные транзишны при скролле.
💅Анимации и рисование: добавление Metal шейдеров, комплишн блоки для анимаций, функции для комбинирования форм.
💅Интеграция с внутренними покупками, сериализация Color, повторение действия кнопки при долгом нажатии и многое другое.
Дизайн-киты для macOS Sonoma

Apple выложили дизайн-киты для новой версии macOS: все UI компоненты, окна, алерты, поповеры, элементы интерфейса вроде дока и уведомлений, цвета и стили.

🔗Sketch
🔗Figma
This media is not supported in your browser
VIEW IN TELEGRAM
Анимация отрываемого стикера из iMessage

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

Код на GitHub
This media is not supported in your browser
VIEW IN TELEGRAM
Превью DocC в Xcode 15

В новой версии Xcode появилась возможность смотреть, как будет выглядеть сгенерированная с помощью DocC документация.
Inspector – новый тип модального представления в SwiftUI

В SwiftUI появился новый модификатор – inspector(isPresented:content:). На macOS и iPadOS он добавляет колонку настраиваемой ширины с правой стороны экрана. На айфоне показывает Bottom Sheet.
Пропуск тестов с XCTSkip

Если вы хотите, чтобы какие-то из ваших тестов временно не исполнялись, правильным подходом будет не переименовывать или комментировать их, а добавить вызов XCTSkip. А если вы хотите не выполнять тест только в каких-то условиях, например, в зависимости от типа устройства или версии OS, используйте XCTSkipIf и XCTSkipUnless.