С выходом
iOS 26 и нового дизайна
Liquid Glass многие команды столкнулись с неочевидными вызовами. Особенно сложная ситуация складывается у проектов с гибридной архитектурой, где
UIKit и
SwiftUI соседствуют годами. Адаптация - это не просто замена цветов и добавление размытий. Это переосмысление навигации, модальностей и даже базовых компонентов интерфейса. На примере приложения
Grow, получившего признание редакции
App Store в 173 странах, разберем, какие решения работают на практике, а какие оказываются тупиковыми.
Двойная стратегия - совместимость и прогрессивность:
Первое и главное правило успешной адаптации - сохранение работоспособности для пользователей старых версий
iOS. В
Grow выбрали стратегию условной компиляции и проверки доступности API через
#available(iOS 26.0, *). Это позволяет:
- Оставлять проверенные интерфейсы для iOS 18 и ниже.
- Предлагать новый визуальный опыт пользователям iOS 26.
- Постепенно мигрировать компоненты не поломав существующую логику.
Навигация - от кастомных решений к нативным компонентам:
Исторически сложилось, что многие проекты заменяли
UINavigationBar кастомными view для сложных UI-элементов.
Liquid Glass требует обратного подхода - возврата к нативным компонентам. В
Grow провели рефакторинг:
- Заменили кастомные панели навигации на UINavigationController.
- Настроили navigationItem для размещения элементов управления.
- Использовали Auto Layout для правильного позиционирования scroll-контейнеров.
Ключевой момент: нативные компоненты лучше адаптируются к системным эффектам морфинга и анимациям
Liquid Glass.
Модальные представления:
Адаптация
UISheetPresentationController оказалась одной из самых простых задач. Для активации эффектов
Liquid Glass достаточно:
- Убрать кастомные фоновые view.
- Использовать системные API для управления размытием краев.
- Настраивать ToolbarItem для контроля Scroll Edge Effect.
Более интересной задачей стала реализация морфинг-меню в формате popover. Вместо чисто SwiftUI-решений команда выбрала гибридный подход через
UIPopoverPresentationController:
- SwiftUI-view упаковывается в UIHostingController.
- Контроллер привязывается к UIBarButtonItem через popoverPresentationController?.sourceItem.
- Делегат UIPopoverPresentationControllerDelegate решает проблемы приоритета жестов и предварительной настройки контента.
Расширение возможностей - стеклянный текст:
Один из наиболее креативных аспектов адаптации - создание кастомных стеклянных эффектов. Используя
Core Text, можно преобразовывать глифы шрифтов в
CGPath, а затем применять к ним эффект
glassEffect(_:in:). Это открывает возможности для:
- Текстовых элементов с эффектом жидкого стекла.
- Произвольных форм, выходящих за рамки геометрических примитивов.
- Динамических эффектов, зависящих от контента.
Вывод:
Адаптация
Liquid Glass в гибридных проектах - это баланс между нативными возможностями системы и существующей архитектурой. Самое важное - понимать, что
Liquid Glass это не просто визуальное обновление, а изменение философии взаимодействия. Успешная адаптация требует не только технических изменений, но и пересмотра подходов к проектированию интерфейсов, где системные компоненты и анимации становятся частью пользовательского опыта, а не его украшением.