如何解决SwiftUI onAppear 在尝试读取 UIKit 的 UIDevice 方向时无法正常工作
使用iOS14.4.2,Swfit5.3.2,XCode12.4,物理设备= iPhoneXS
出现时,我试图将当前设备方向写入静态属性,然后在视图中使用它。
但是出现的时候值没有正确写入。
这是我的代码(见下文)
请注意,isPortrait
将始终为 false
- 无论我在启动时如何调整 iPhone。
特别是,当 iPhone 在启动时处于 Portrait 时,属性不应该是 true
??
为什么会有这种奇怪的行为?
我认为,Apple 应该加强 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。