В моем случае я переключаю элементы панели инструментов с помощью сегментированного средства выбора (не навигации). Содержимое панели инструментов меняется, но анимация Liquid Glass воспроизводится только в том случае, если я переключаю вкладки очень быстро. Если я переключаюсь нормально, панель инструментов обновляется мгновенно без анимации.
Код воспроизведения
Код: Выделить всё
struct ContentView: View {
@State private var tab: Tabs = .tab1
var body: some View {
NavigationStack {
ZStack {
switch tab {
case .tab1:
Text("Tab 1")
.toolbar {
ToolbarItem(placement: .topBarLeading) {
Button("Tab 1 Button", systemImage: "person") { }
}
}
case .tab2:
Text("Tab 2")
.toolbar {
ToolbarItem(placement: .topBarLeading) {
Button("Tab 2 Button", systemImage: "plus") { }
}
ToolbarItem(placement: .topBarLeading) {
Button("Tab 2 Button", systemImage: "trash") { }
}
}
}
}
.animation(.default, value: tab)
.navigationTitle("Testing Toolbar")
.toolbarTitleDisplayMode(.inline)
.safeAreaBar(edge: .top) {
Picker("Picker", selection: $tab) {
Text("Tab 1").tag(Tabs.tab1)
Text("Tab 2").tag(Tabs.tab2)
}
.pickerStyle(.segmented)
}
}
}
enum Tabs {
case tab1
case tab2
}
}
- Обычное переключение вкладок → панель инструментов меняется без анимации Liquid Glass
- Быстрое переключение вкладок → анимация морфинга Liquid Glass работает play

Вопрос
Есть ли способ заставить анимацию Liquid Glass, когда элементы панели инструментов изменяются из-за обновлений состояния (например, сегментированный выбор)?
Подробнее здесь: https://stackoverflow.com/questions/798 ... g-state-ra
Мобильная версия