С выходом 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 это не просто визуальное обновление, а изменение философии взаимодействия. Успешная адаптация требует не только технических изменений, но и пересмотра подходов к проектированию интерфейсов, где системные компоненты и анимации становятся частью пользовательского опыта, а не его украшением.
➡️ Подписаться на канал
Мобильный трудоголик