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

Что изменилось в поиске на iOS 26: разбор новых возможностей SwiftUI

Всем привет! Если вы обновляете свое приложение под iOS 26, то обратили внимание на поиск. Apple серьезно переработала не только визуал, но и логику размещения поисковых интерфейсов.

Рассказываю, как это работает теперь, с живыми примерами и кодом.

Поиск в 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)

Поиск в detail view:


Если поиск нужен только в детальном представлении, то модификатор применяется к нему:

NavigationSplitView {
// Список без поиска
} detail: {
NoteDetailView(note: selectedNote)
.searchable(text: $searchText) // Только для детального просмотра
}

Здесь тоже работает новое позиционирование: сверху на iPad, снизу на iPhone.

Поиск в tabBar:


Для приложений с 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, особенно для больших экранов, при этом сохраняя гибкость кастомизации.
14.09.2025 69 445