Всем привет! Если вы обновляете свое приложение под iOS 26, то обратили внимание на поиск. Apple серьезно переработала не только визуал, но и логику размещения поисковых интерфейсов.
Рассказываю, как это работает теперь, с живыми примерами и кодом.
1️⃣ Поиск в toolbar.
Раньше поиск в NavigationSplitView автоматически размещался в сайдбаре на iPad и вверху экрана на iPhone. Теперь система сама выбирает оптимальное расположение:
// Раньше: поиск всегда в сайдбаре
NavigationSplitView {
List(notes, selection: $selectedNote) { note in
NavigationLink(note.title, value: note)
}
.navigationTitle("Notes")
} detail: {
NoteDetailView(note: selectedNote)
}
.searchable(text: $searchText) // Новый стиль по умолчанию
В iOS 26 тот же код дает совершенно другой результат:
🔹На iPad: поиск в стеклянном контейнере в правом верхнем углу.
🔹На iPhone: поиск внизу экрана (удобно для больших экранов).
Хотите вернуть старое поведение? Укажи явное размещение:
.searchable(text: $searchText, placement: .sidebar)
2️⃣ Поиск в detail view.
Если поиск нужен только в детальном представлении, то модификатор применяется к нему:
NavigationSplitView {
// Список без поиска
} detail: {
NoteDetailView(note: selectedNote)
.searchable(text: $searchText) // Только для детального просмотра
}Здесь тоже работает новое позиционирование: сверху на iPad, снизу на iPhone.
3️⃣ Поиск в tabBar.
Для приложений с табБаром появился отдельный сценарий. Создаем вкладку с ролью .search:
TabView {
Tab("Library", systemImage: "books.vertical") {
LibraryView()
}
Tab(role: .search) { // Важно: роль search
NavigationStack { // Обязательно в NavigationStack
SearchView()
.navigationTitle("Search")
}
}
}
.searchable(text: $searchText)В iOS 26 такая вкладка:
🔹 Визуально отделена от других.
🔹 Превращается в поисковое поле при выборе.
🔹 На iPad размещается по центру сверху.
⚠️ Новые toolbar-компоненты.
Самое интересное — кастомизация нижнего toolbar. Добавлены два новых типа контента:
.toolbar {
if #available(iOS 26.0, *) {
DefaultToolbarItem(kind: .search, placement: .bottomBar) // Новый!
ToolbarSpacer(.flexible, placement: .bottomBar) // И этот новый
}
ToolbarItem(placement: .bottomBar) {
NewNoteButton() // Ваша кастомная кнопка
}
}Так поиск и другие элементы toolbar правильно распределят пространство.
✅ Минимизация поиска.
Если поиск не основная функция, можно свернуть его в кнопку:
// Создаем extension для удобства
extension View {
@ViewBuilder func minimizedSearch() -> some View {
if #available(iOS 26.0, *) {
self.searchToolbarBehavior(.minimize)
} else {
self
}
}
}
// Использование
.searchable(text: $searchText)
.minimizedSearch() // Теперь это кнопка поиска!
Система может применить это поведение автоматически, в зависимости от размера экрана или количества элементов toolbar.
💡 Вывод:
Большинство изменений в поиске iOS 26 работают автоматически, достаточно обновить приложение до новых API. Новый дизайн обеспечивает единый стиль и улучшенный UX, особенно для больших экранов, при этом сохраняя гибкость кастомизации.
➡️ Подписаться на канал
Мобильный трудоголик
