Swiftui 使用垂直滚动视图忽略水平安全区域

Swiftui 使用垂直滚动视图忽略水平安全区域,swiftui,scrollview,Swiftui,Scrollview,我正在尝试在垂直滚动视图中创建一个包含多个水平滚动视图的布局,类似于苹果Pages应用程序中的模板选择器。我希望水平滚动视图的内容在安全区域之外可见。然而,我似乎无法在水平安全插入之外获取垂直滚动视图的内容。这在横向使用带有凹口的iPhone时是可见的 我尝试过在垂直滚动视图的内容中添加负片填充。这种方式可以工作,但在纵向模式下使用设备时会产生问题 下面的示例代码显示了该问题。我希望在水平滚动时,矩形在安全区域之外是可见的,但它们被剪裁了。我怎样才能使他们在安全区域之外可见 import Swi

我正在尝试在垂直滚动视图中创建一个包含多个水平滚动视图的布局,类似于苹果Pages应用程序中的模板选择器。我希望水平滚动视图的内容在安全区域之外可见。然而,我似乎无法在水平安全插入之外获取垂直滚动视图的内容。这在横向使用带有凹口的iPhone时是可见的

我尝试过在垂直滚动视图的内容中添加负片填充。这种方式可以工作,但在纵向模式下使用设备时会产生问题

下面的示例代码显示了该问题。我希望在水平滚动时,矩形在安全区域之外是可见的,但它们被剪裁了。我怎样才能使他们在安全区域之外可见

import SwiftUI

struct ContentView: View {
    var body: some View {
        ScrollView(.vertical) {
            ScrollView(.horizontal) {
                HStack {
                    Rectangle()
                    .frame(width: 200, height: 300)
                    
                    Rectangle()
                    .frame(width: 200, height: 300)
                    
                    Rectangle()
                    .frame(width: 200, height: 300)
                }
            }   .edgesIgnoringSafeArea(.horizontal)
        }   .edgesIgnoringSafeArea(.horizontal)
    }
}


您可以检测设备的方向何时改变并调整视图:

struct ContentView: View {
    @Environment(\.verticalSizeClass) var verticalSizeClass

    var body: some View {
        Group {
            if verticalSizeClass == .compact {
                content.edgesIgnoringSafeArea(.horizontal)
            } else {
                content
            }
        }
    }

    var content: some View {
        ScrollView(.vertical) {
            ScrollView(.horizontal) {
                HStack {
                    Rectangle()
                        .frame(width: 200, height: 300)

                    Rectangle()
                        .frame(width: 200, height: 300)

                    Rectangle()
                        .frame(width: 200, height: 300)
                }
            }
        }
        .edgesIgnoringSafeArea(.horizontal)
    }
}

对于Xcode 12/iOS 14,它可以按原样工作。@Asperi可以选择放弃对