iOS SwiftUI:ScrollView 忽略顶部安全区域

iOS SwiftUI: ScrollView ignore top safe area

我的应用程序中有一个可以在不同地方调用的共享视图。 这个view的root是一个scroll view,但是有时候会忽略顶部的安全区域,会塌陷在导航栏下面

这里有两个屏幕截图可以更好地显示问题:

正如您在第二个屏幕截图中看到的那样,滚动视图扩展到导航下折叠的所有屏幕。 我怎样才能避免这种情况?

使用以下方法解决:

.navigationViewStyle(StackNavigationViewStyle())

在所有 NavigationView 中

.padding(.top, 1) 添加到滚动视图将解决问题。

你可以通过给滚动视图填充填充来解决它

ScrollView {
    VStack(spacing: 0) {
      
        Text("test")
        Text("test")
        Text("test")
        Text("test")
        Text("test")
        
    }
}
.padding(.top, UIApplication.shared.windows.first!.safeAreaInsets.top )

我对 NavigationView 中的列表也有类似的问题,并忽略了底部安全区域。 对我有帮助的是将列表底部填充设置为某个非零值,如下所示:

.padding(.bottom, 1)

这看起来像一个错误,这个问题在 iOS 15.2

上仍然存在

,但如果您不想要可见的填充,只需将其更改为 .padding(.top, 0.1)。 (我测试过,0.1 是使它起作用的最小可能值)