Добавить объявление

SwiftUI теперь умеет скрывать навигационную панель при скролле

Раньше, чтобы скрыть или показать навигационную панель при скролле, нужно было отслеживать позицию прокрутки вручную. Слушать изменения scroll offset, вычислять направление, анимировать изменение состояния навбара. Это работало, но требовало лишнего кода и было не всегда предсказуемо.

В iOS 27 появился новый модификатор, который делает все это стандартными средствами, без костылей.

Как это работает:


Модификатор toolbarMinimizeBehavior позволяет указать, как должна вести себя панель инструментов при прокрутке содержимого.

ScrollView {
ContentView()
}
.toolbarMinimizeBehavior(.onScrollDown, for: .navigationBar)

Когда пользователь скроллит вниз, навигационная панель минимизируется, освобождая больше места для контента. Все, что нужно было сделать разработчику - добавить одну строчку кода. Без UIScrollViewDelegate, без GeometryReader, без onPreferenceChange.

Когда это может пригодиться:


Такой подход полезен для экранов, где контент - главное. Ленты новостей, каталоги товаров, библиотеки, результаты поиска, длинные списки с большим количеством элементов. Все, где пользователь тратит много времени на скроллинг, а навигационная панель только занимает полезное пространство.

Что важно знать:


При минимизации навбара безопасная область (safe area) автоматически корректируется. Контент не перекрывается, отступы сохраняются. Это поведение работает по умолчанию и в большинстве случаев его достаточно.

Если нужен более тонкий контроль, есть toolbarMinimizationSafeAreaAdjustment, который позволяет управлять этим поведением. Особенно это может пригодиться на экранах с кастомными заголовками или сложной версткой.

Также важно, что когда навигационная панель минимизируется, вместе с ней сворачивается и встроенная верхняя таб-панель, если она интегрирована в навигационную область. Это делает поведение единым для всей верхней части интерфейса.

Где это не стоит использовать:


Данный модификатор - не универсальное решение. На экранах, где кнопки панели инструментов должны оставаться видимыми всегда (например экраны с важными действиями вроде «Сохранить» или «Отправить»), минимизация навбара может дезориентировать пользователя. В таких случаях лучше оставить стандартное поведение.

Вывод:


toolbarMinimizeBehavior - это небольшой, но полезный модификатор, который решает задачу, которую раньше решали кучей костылей. Он не требует отслеживания scroll offset, не ломается при изменении ориентации и работает предсказуемо.

SwiftUI продолжает закрывать пробелы, которые раньше заставляли разработчиков писать лишний код. Это один из таких случаев. Просто и без боли.
08.07.2026 42 597