我有一个视图,当导航栏从.large
变为.inline
时,我想为其设置动画大小。
我知道我可以使用GeometryReader来获取safeAreaInsets,但是例如在滚动列表并且导航栏从.large
变为.inline
时,它似乎没有更新。显示导航栏如何变化的简单视图是这样的:
struct ContentView: View {
var body: some View {
List {
ForEach(0..<100) {
Text("Test \($0)")
}
}
.navigationBarTitle(Text("Title")
.onPreferenceChange(???, perform: { newSafeAreaInsets in
// Do some logic with the new safe area insets
})
}
}
我想知道是否存在一些PreferenceKey或我缺少的东西,可以用来观察导航栏/安全区域插图的大小并以正确的方式更新我的视图?