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

And*_*tto 3 ios swift ios13 swiftui xcode11

我的应用程序中有一个共享视图,可以在不同的地方调用。这个视图的根是一个滚动视图,但有时它会忽略顶部安全区域并折叠在导航栏下方。

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

在此处输入图片说明 在此处输入图片说明

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

Iho*_*ovk 7

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


小智 6

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

.padding(.bottom, 1)
Run Code Online (Sandbox Code Playgroud)

看起来像是一个错误,这个问题在 iOS 15.2 上仍然存在


Tam*_*gel 6

Ihor Vovk 的解决方案工作完美,但如果您不想要可见的填充,只需将其更改为.padding(.top, 0.10001).


小智 5

用更简单的方式思考,你会感到惊讶请使用修饰符 .clipped() -> 问题是滚动视图允许其内容溢出,就像 UIkit 中的 maskToBounds 属性,上面的 padding(.top, 1) 解决方案也是防止内容溢出的一种方法。


And*_*tto 1

使用以下方法解决:

.navigationViewStyle(StackNavigationViewStyle())
Run Code Online (Sandbox Code Playgroud)

在所有的导航视图中

  • 有人有其他解决方案吗?这对我不起作用 (2认同)