Как вернуть другой вид для другой ориентации? - PullRequest
0 голосов
/ 11 июля 2019

У меня есть вид, который является VStack из двух других видов, и это все, что есть.

Это прекрасно работает в портретной ориентации (или в высоких / тощих окнах MacOS), но оно сжатое, неудобно, и некоторые части не могут быть использованы в альбомной (или широкие / короткие окна MacOS).

Как мне сделать, чтобы это представление возвращало VStack, когда оно портретное / высокое / худое, ноHStack когда это пейзаж / широкий / короткий?

Я пробовал много вещей, но все это приводило к ошибкам компилятора.Поскольку SwiftUI такой новый, я не смог найти в Интернете ничего об этом.

1 Ответ

2 голосов
/ 11 июля 2019

Вы можете реагировать на окружающую среду. Например, если вы хотите отреагировать на horizontalSizeClass (обычный или компактный):

struct MyView: View {
    @Environment(\.horizontalSizeClass) var horizontalSizeClass: UserInterfaceSizeClass

    var body: some View {
        Group {

            if horizontalSizeClass == .regular {
                HStack {
                    Text("A")
                    Text("B")
                }
            } else { // compact
                VStack {
                    Text("A")
                    Text("B")
                }

            }
        }.border(Color.red)
    }
}
...