Как определить, будет ли всплывающее окно отображаться как всплывающее окно или лист в SwiftUI?
В SwiftUI при отображении всплывающего окна оно будет отображаться либо как всплывающее окно, либо как лист, в зависимости от устройства (iPad или iPhone) и доступного места в окне.
Есть ли правильная эвристика, чтобы проверить, будет ли всплывающее окно отображаться как всплывающее окно или лист?
Например, на iPad всплывающее окно будет отображаться в виде листа при многозадачности и в вертикальном положении или в горизонтальном положении при размере экрана в четверть экрана.
2 ответа
Ответ здесь заключается в том, что мне нужно было перейти от родительского представления, которое представляло всплывающее окно.
На основании моего тестирования вы МОЖЕТЕ использовать
@Environment(\.horizontalSizeClass)
выяснить:
struct ContentView: View {
@Environment(\.horizontalSizeClass) var sizeClass
@State private var showPopover = false
var body: some View {
Button("Show PopOver") {
showPopover = true
}
.popover(isPresented: $showPopover) {
Text(sizeClass == .regular ? "regular size" : "compact size")
.frame(width: 300, height: 300)
}
}
}