通过使用.tabViewStyle(PageTabViewStyle())
将TabView用作页面查看器可以很好地工作,但是试图通过应用edgesIgnoringSafeArea
让它从一个边缘运行到另一个边缘似乎不起作用。
我错过了什么?
struct ContentView: View {
let colors: [Color] = [.red, .green, .blue]
var body: some View {
TabView {
ForEach(0...2, id: \.self) { index in
Rectangle()
.fill(colors[index])
}
}
.tabViewStyle(PageTabViewStyle())
.edgesIgnoringSafeArea(.all)
}
}
将另一个.edgesIgnoringSafeArea(.all)
添加到Rectangle
或ForEach
也不起作用。
请注意,所有这些问题都是不同的,因为它们不使用use PageTabViewStyle()
:
- How do I use a TabView with a NavigationView in SwiftUI?
- Adding a TabView makes the Navigation Bar not cover the safe area in SwiftUI
- NavigationView doesn't display correctly when using TabView in SwiftUI
- In my NavigationView '.edgesIgnoringSafeArea' does not move content past the safe area
他们的解决方案(添加edgesIgnoringSafeArea(.all)
)在这种情况下不起作用。
6条答案
按热度按时间0wi1tuuw1#
1.从选项卡视图中删除.edgesIgnoringSafeArea(.all)
1.向TabView添加具有屏幕宽度和高度的框架
1.使用ScrollView Package TabView
1.将.edgesIgnoringSafeArea(.all)添加到滚动视图
t40tm48m2#
SwiftUI 3.0中的更新:
omhiaaxx3#
这是我得到的最大值...无论如何,我假设最初它是一个错误,值得提交反馈给苹果。
使用Xcode 12b进行测试
az31mfrm4#
我通过“延长”
TabView
的高度并将其向顶部“移动”相同的量来解决这个恼人的问题:在Xcode 12.4和iOS 14.4上测试:
db2dz4w85#
按照@kimigori here的建议,将TabView Package 在ScrollView中是可行的,但会导致页面点变成可滚动的。若要将它们固定在适当的位置,请使用水平ScrollView。
这是一个可重复使用的页面视图,可与
ignoresSafeArea(_:edges:)
一起使用:示例:
TestPageView gif
b1payxdu6#
只需用途:
我认为
TabView
不能忽略前导和尾随,这是包含在.all
中的。但是,如果你手动设置.top
和.bottom
,它可以正常工作。