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 是使它起作用的最小可能值)
我的应用程序中有一个可以在不同地方调用的共享视图。 这个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 是使它起作用的最小可能值)