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

1cosmwyk  于 2023-05-30  发布在  iOS
关注(0)|答案(6)|浏览(217)

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

正如你在第二个屏幕截图中看到的,滚动视图扩展到了导航下折叠的所有屏幕。我该如何避免这种情况?

o2g1uqev

o2g1uqev1#

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

ubof19bj

ubof19bj2#

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

.padding(.bottom, 1)

这看起来像是一个bug,这个问题在iOS15.2上仍然存在

mrphzbgm

mrphzbgm3#

Ihor Vovk's solution works perfectly,但如果你不想要一个可见的填充,只需将其更改为.padding(.top, 0.1)。(我测试了,0.1是使其工作的最小可能值)

6tr1vspr

6tr1vspr4#

使用以下方法求解:

.navigationViewStyle(StackNavigationViewStyle())

在所有NavigationView中

62o28rlo

62o28rlo5#

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

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

wswtfjt76#

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

相关问题