错误的设备方向返回

5

我认为我发现了UIDevice.orientation变量中的一个bug。

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(true)
    if UIDevice.current.orientation.isPortrait{
        print("Orientation is Portrait")
    }
    else{
        print("Orientation is Landscape")
    }
}

如果我拿着我的iPhone 5手机,一切都正常运作,但如果手机平放在桌子上,即使所有内容以纵向显示,并且设备本身没有旋转,我也会收到“方向为横向”的消息。 有没有可能对此采取什么措施?

//编辑:在按钮操作中,这个测试也失败了。


viewDidAppear 明显不是执行此测试的最佳位置。当在 override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() ... } 中执行此测试时,您是否获得相同的结果? - trndjc
我在viewDidLayoutSubviews中无法理解它,但是当我将其放入按钮点击事件中时,我就能够理解了。 - LarsGvB
太好了,问题解决了。 - trndjc
不完全!问题仍然存在,当我点击一个按钮时,它必须根据当前方向执行不同的操作。我通过添加额外的if语句来暂时解决了这个问题,即self.view.frame.width < self.view.frame.height,但我认为这是一个糟糕的解决方案。 - LarsGvB
你的问题中没有提到按钮。 - trndjc
显示剩余2条评论
2个回答

3

除了纵向和横向之外,还有更多的屏幕方向。您正在检查纵向并假设其他所有内容都是横向。但实际上不是这样的。在这种情况下,实际的方向可能是“面朝上”。


谢谢,我明天会测试它。 - LarsGvB

1

除了竖屏和横屏之外,还有第三个选项 UIDevice.current.orientation.isFlat,您只检查了竖屏。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接