Telegram Web Link
SwiftUI Tips & Tricks

Пополняющийся тред из 20+ не самых очевидных советов по работе со SwiftUI. Вот некоторые из них:

- lineLimit у Text можно задавать не одним числом, а интервалом. Тогда компонент высота компонента будет всегда не меньше нижней границы, и не больше верхней.
- В любую функцию можно передать #file, #line, #function в качестве параметров – и использовать их в логах, чтобы понять, откуда была вызвана функция.
- Если вам нужно быстро создать TextField, чтобы что-то проверить, можно не передавать ему Binding, а инициализировать его с .constant(“Text”).
Что нового в Swift 5.9

👉if и switch теперь можно использовать при присвоении значения переменной или для возврата значения из функции
👉Можно писать макросы, которые исполняются во время компиляции
👉Структуры и enum’ы, которве нельзя копировать, а можно только передавать по ссылке
👉Новый оператор consume, который копирует значение переменной и уничтожает ее

В статье очень детально разбираются эти и другие новые фичи. Идеальный материал, чтобы подготовиться к WWDC!
This media is not supported in your browser
VIEW IN TELEGRAM
Реплика системного блюра на CAFilter

Разработчик зареверсинжинирил реализацию блюра и повторил его, используя приватные API. Есть возможность обойтись и без них, перейдя на SceneKit и Metal шейдеры, но качество будет чуть хуже.

Код на GitHub
Опубликован вижн интеропа Swift -> C++

Интероп Swift и C++ состоит из двух частей:

- Вызов Swift из C++ кода (этот пропозал уже давно опубликован и принят)
- Вызов C++ из Swift (вот ему и посвящен этот документ)

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

Самое время напомнить вам про офигенный ресурс от коммьюнити – WWDC Notes. Ребята смотрят сессии и превращают их в статьи, выделяя все самое важное. В этом году они обещают расшифровать 80% сессий в течение первой недели!
Что нового в UIKit

Каждый год на WWDC все меньше апдейтов для UIKit. В этом году вот так:

👉Новый класс UIContentUnavailableView для отображения пустого стейта
👉Поддержка Xcode Preview, у которых еще и новый синтаксис на макросах появился
👉Поддержка анимаций в SFSymbols, добавленных как элемент кнопки или как ImageView
👉Новые типы шрифтов: большой и очень большой
👉Новые типы автозаполнения для UITextField: для дня рождения и даты окончания действия карты
This media is not supported in your browser
VIEW IN TELEGRAM
Динамическое меню в трее на macOS

Отличный разбор API NSStatusItem, с помощью которого можно создать меню с динамическим размером и контентом, кастомным бэкграундом и поддержкой нескольких разных таргетов для нажатий.
This media is not supported in your browser
VIEW IN TELEGRAM
Офер в Яндекс за два дня

Приходите на Weekend Offer Mobile 17–18 июня. Всего за 2 дня можно пройти все технические секции, пообщаться с нанимающими командами и получить офер.

Ребята ищут мобильных разработчиков на iOS, Android и Flutter с опытом от 3 лет. Приглашают в один из своих офисов в России и Беларуси, также нанимают в международные хабы в Армении, Казахстане и Сербии.

Регистрация заканчивается 12 июня.

Подробности ищите здесь
Все анонсы WWDC

Apple собрали документацию по всем новым фреймворкам и API на одной странице. А отдельно можно скачать кучу семплов, которые показывали в сессиях.
Интеграция ChatGPT и Xcode

Экспериментальный экстеншн для Xcode, который использует ChatGPT для генерации кода по инструкциям, комментариев к нему, рефакторинга кода и других фичей. Можно добавлять и свои собственные команды.
Главные обновления 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.
2024/11/05 23:05:22
Back to Top
HTML Embed Code: