平放在表面上时的 iPad 启动方向

Posted

技术标签:

【中文标题】平放在表面上时的 iPad 启动方向【英文标题】:iPad launch orientation when flat on surface 【发布时间】:2010-10-10 17:30:40 【问题描述】:

我有以下代码:

 -(void)viewWillAppear:(BOOL)animated 

    UIDeviceOrientation orientation = [[UIDevice currentDevice] UIInterface];

    if(orientation==UIDeviceOrientationLandscapeLeft || orientation==UIDeviceOrientationLandscapeRight) 
        NSLog(@"Device Landscape");
     else 
        NSLog(@"Device Portrait");
    

 

这非常适用于模拟器和设备,但前提是 iPad 不是平放在表面上,例如,如果我将 iPad 放在我的桌子上并加载视图,它会显示它的肖像,所以我无法检测到视图出现时的方向。

关于调用 viewWillAppear 时检测界面方向的最佳方法有什么想法吗?

谢谢

【问题讨论】:

好吧,如果 iPad 实际上是 FaceUp,你希望你的应用做什么? 他想知道当设备平放时是横向还是纵向显示视图。 我有一个子视图,它显示在不同的地方,具体取决于视图是横向/纵向。所以我需要知道view出现时界面的方向。 【参考方案1】:

您应该使用[self interfaceOrientation] 而不是设备方向。

【讨论】:

ios 12(或 8+)中呢?【参考方案2】:

[[UIApplication sharedApplication] statusBarOrientation] 也适用于您在代码中某处无法访问[self interfaceOrientation]

【讨论】:

【参考方案3】:

首先,你知道 UIViewController 的 interfaceOrientation 属性吗?看起来您正在尝试复制它。如果您真的想这样做,只需订阅设备方向更改通知,检查新方向是否是有效的界面方向(这是一个宏),如果是,将值存储到某个变量(如 lastSeenOrientation)。然后,您可以在任何地方依赖该值。

【讨论】:

以上是关于平放在表面上时的 iPad 启动方向的主要内容,如果未能解决你的问题,请参考以下文章

iPad 启动方向

纵向启动问题的 iPad 方向(底部主页按钮)

为啥 iPad 默认启动图像方向不起作用(iOS 5)?

如何检测 iPad 上启动屏幕动画的应用程序启动方向!

在 iPad 上启动应用程序时没有获得正确的方向

支持 iPhone 6 和 iPhone 6+,针对 iPad 纵向和横向方向具有不同的启动/启动屏幕图像