Раньше, чтобы скрыть или показать навигационную панель при скролле, нужно было отслеживать позицию прокрутки вручную. Слушать изменения
scroll offset, вычислять направление, анимировать изменение состояния навбара. Это работало, но требовало лишнего кода и было не всегда предсказуемо.
В
iOS 27 появился новый модификатор, который делает все это стандартными средствами, без костылей.
Как это работает:
Модификатор
toolbarMinimizeBehavior позволяет указать, как должна вести себя панель инструментов при прокрутке содержимого.
ScrollView {
ContentView()
}
.toolbarMinimizeBehavior(.onScrollDown, for: .navigationBar)
Когда пользователь скроллит вниз, навигационная панель минимизируется, освобождая больше места для контента. Все, что нужно было сделать разработчику - добавить одну строчку кода. Без
UIScrollViewDelegate, без
GeometryReader, без
onPreferenceChange.
Когда это может пригодиться:
Такой подход полезен для экранов, где контент - главное. Ленты новостей, каталоги товаров, библиотеки, результаты поиска, длинные списки с большим количеством элементов. Все, где пользователь тратит много времени на скроллинг, а навигационная панель только занимает полезное пространство.
Что важно знать:
При минимизации навбара безопасная область (safe area) автоматически корректируется. Контент не перекрывается, отступы сохраняются. Это поведение работает по умолчанию и в большинстве случаев его достаточно.
Если нужен более тонкий контроль, есть
toolbarMinimizationSafeAreaAdjustment, который позволяет управлять этим поведением. Особенно это может пригодиться на экранах с кастомными заголовками или сложной версткой.
Также важно, что когда навигационная панель минимизируется, вместе с ней сворачивается и встроенная верхняя таб-панель, если она интегрирована в навигационную область. Это делает поведение единым для всей верхней части интерфейса.
Где это не стоит использовать:
Данный модификатор - не универсальное решение. На экранах, где кнопки панели инструментов должны оставаться видимыми всегда (например экраны с важными действиями вроде «Сохранить» или «Отправить»), минимизация навбара может дезориентировать пользователя. В таких случаях лучше оставить стандартное поведение.
Вывод:
toolbarMinimizeBehavior - это небольшой, но полезный модификатор, который решает задачу, которую раньше решали кучей костылей. Он не требует отслеживания
scroll offset, не ломается при изменении ориентации и работает предсказуемо.
SwiftUI продолжает закрывать пробелы, которые раньше заставляли разработчиков писать лишний код. Это один из таких случаев. Просто и без боли.