【问题标题】:After current device orientation been overwritten, what is left to identify physical orientation of the device?当前设备方向被覆盖后,还剩下什么来识别设备的物理方向?
【发布时间】:2018-06-27 11:41:12
【问题描述】:

在基于选项卡的应用程序中,假设设备在物理上处于横向并固定在该方向。一个选项卡应仅以纵向显示,以在用户切换选项卡时强制该​​方向

[[UIDevice currentDevice] setValue:@(UIInterfaceOrientationPortrait) forKey:@"orientation"];

在这之后,有没有办法我们仍然可以发现设备是物理横向的,所以当用户返回支持横向的视图时,我们可以用正确的横向值更新“方向”?因为 UIDevice->currentDevice->Orientation 开始报告为 Portrait,因为我们更新了它。我找不到任何其他可以说明设备在物理上处于横向的事实。

我错过了什么吗?

【问题讨论】:

    标签: ios objective-c uitabbarcontroller uideviceorientation


    【解决方案1】:

    我猜你仍然可以使用陀螺仪来获得旋转。

    但是您不应该这样做。您需要对每个视图控制器使用限制(我假设您尝试过但没有工作)。锁定每个视图控制器方向后,确保消息在嵌入式视图控制器上正确转发。

    这意味着每个UINavigationViewController 都应该被覆盖并返回其顶视图控制器的设置。这也意味着每个UITabBarController 都应该使用其当前显示的视图控制器执行相同的操作。在实际情况下,您可能有一个导航控制器持有一个标签栏视图控制器,显示另一个导航控制器具有其当前可见的视图控制器。即使在这种情况下,您也必须确保最底部的导航控制器将从最顶部的可见视图控制器接收设置。

    【讨论】:

    • 一旦当前设备方向以编程方式更改,iOS 会报告该方向,直到发生物理更改。这实际上会影响在不物理更改设备的情况下恢复到两个方向支持的视图。
    • @Saran 至于您的问题(标题),如果您在完成操作后需要识别设备方向,您仍然可以使用陀螺仪。至于其余的,我相信你无论如何都不应该在你的情况下使用这种方法。您应该使用标准的方向锁定机制。
    猜你喜欢
    • 2018-08-16
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多