提问者:小点点

TabView上的edgesIgnoringSafeArea(PageTabViewStyle不工作)


通过使用.tabViewStyle(PageTabViewStyle())将TabView用作pageviewer可以正常工作,但试图通过应用EdgesIgnoringSafeArea让它从边缘到边缘运行似乎不起作用。

我错过了什么?

struct ContentView: View {
    let colors: [Color] = [.red, .green, .blue]
    var body: some View {
        TabView {
            ForEach(0...3, id: \.self) { index in
                Rectangle()
                    .fill(colors[index])
            }
        }
        .tabViewStyle(PageTabViewStyle())
        .edgesIgnoringSafeArea(.all)
    }
}

RectangleForeach中添加另一个.EdgesIgnoringSafeArea(.all)也不起作用。

请注意,所有这些问题都是不同的,因为它们没有使用usePageTabViewStyle():

  • 如何在SwiftUI中使用TabView和NavigationView?
  • 添加TabView会使导航栏不覆盖SwiftUI中的安全区域
  • 在SwiftUI中使用TabView时,NavigationView无法正确显示
  • 在my NavigationView中“。EdgesIgnoringSafeArea”不会将内容移过安全区

他们的解决方案(添加EdgesIgnoringSafeArea(.all))在这种情况下不起作用。


共1个答案

匿名用户

这是我得到的最大值。。。 无论如何,我认为最初它是一个bug,值得向苹果提交反馈。

使用Xcode 12b测试

struct TestPagingStyle: View {
    let colors: [Color] = [.red, .green, .blue]
    var body: some View {
        ZStack {
            Color.black.overlay(
                GeometryReader { gp in
                    TabView {
                        ForEach(0..<3, id: \.self) { index in
                            Text("Hello, World \(index)")
                                .frame(width: gp.size.width, height: gp.size.height)
                                .background(colors[index])
                        }
                    }
                    .tabViewStyle(PageTabViewStyle(indexDisplayMode: .always))
                }
            )
        }.edgesIgnoringSafeArea(.all)
    }
}