如何为不同的方向返回不同的视图?

Sup*_*tar 1 responsive-design swiftui

我有一个视图,它是VStack另外两个视图的一个视图,仅此而已。

这在纵向(或高/窄 macOS 窗口)中效果很好,但它被压扁、笨拙,并且某些部分在横向(或宽/短 macOS 窗口)中不可用。

我如何让这个视图VStack在纵向/高/瘦时返回 a ,但HStack在横向/宽/短时返回 a?

我尝试了很多东西,但都导致编译器错误。由于 SwiftUI 太新了,我在网上找不到任何关于此的信息。

G. *_*arc 8

我使用 GeometryReader 并比较宽度和高度解决了这个问题。如果宽度 > 高度,则设备处于横向模式,否则处于纵向模式:

struct MyView: View {
    var body: some View {
        return GeometryReader { proxy in
            if proxy.size.width < proxy.size.height {
                VStack {
                    ...
                }
            } else {
                HStack {
                    ...
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)