Swiftui 尝试读取UIKit';UIS设备定向

Swiftui 尝试读取UIKit';UIS设备定向,swiftui,device-orientation,uidevice,onappear,Swiftui,Device Orientation,Uidevice,Onappear,使用iOS14.4.2、Swfit5.3.2、XCode12.4,物理设备=iPhoneXS 出现时,我试图将当前设备方向写入静态属性,然后在视图中使用它 但是,显示时未正确写入该值 这是我的代码(见下文) 请注意,isPortrait将始终为false——无论我在启动时如何定位iPhone。 特别是,当iPhone在启动时处于纵向状态时,属性不应该是true 为什么会有这种奇怪的行为 我认为,苹果应该加强与SwiftUI的设备定位问题 struct MyView: View {

使用iOS14.4.2、Swfit5.3.2、XCode12.4,物理设备=iPhoneXS

出现时,我试图将当前设备方向写入静态属性,然后在视图中使用它

但是,显示时未正确写入该值

这是我的代码(见下文)

请注意,
isPortrait
将始终为
false
——无论我在启动时如何定位iPhone。 特别是,当iPhone在启动时处于纵向状态时,属性不应该是
true

为什么会有这种奇怪的行为

我认为,苹果应该加强与SwiftUI的设备定位问题

struct MyView: View {
  
    @State var isPortrait: Bool = true
 
    var body: some View {
    
        VStack {
            Text("text1")
            if isPortrait {
                Test("text2")      // never shown why ???
            }
        }
        .onAppear {
            isPortrait = (UIDevice.current.orientation == .portrait)
            print(isPortrait)  // always prints 'false' why ????
        }
    } 
}
请不要告诉我使用
GeometryReader
,因为这在iPad上还不起作用。

使用这个:

UIApplication.shared.windows.first?.windowScene?.interfaceOrientation.isPortrait

谢谢-这在页面上的
中起作用。有一个替代品是很好的,但是为什么第一个不起作用呢?我没有找到原因,但它与您的代码无关。很可能是个虫子。