在SwiftUI中观察安全区域插图

时间:2020-09-15 20:31:43

标签: swift swiftui navigationbar

我有一个视图,当导航栏从.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或我缺少的东西,可以用来观察导航栏/安全区域插图的大小并以正确的方式更新我的视图?

0 个答案:

没有答案