【发布时间】:2015-10-02 01:02:01
【问题描述】:
在我的 iPhone 应用程序中,我将其限制为仅在项目目标部署信息下的纵向
我只想要一个横向页面,我使用supportedInterfaceOrientations 方法来获取它。
标准实现:
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.Landscape
}
它可以在所有 iPhone 设备和 iOS 版本上完美运行,iPhone 6+ 除外。从不调用supportedInterfaceOrientations 方法。
我找不到任何可能仅影响 iPhone 6+ 的原因,任何提示将不胜感激。
【问题讨论】:
-
我刚刚创建了一个空的单视图应用程序,并验证了
supportedInterfaceOrientations()已为 6 Plus 和 6 Plus 调用。除非视图控制器是导航 vc、拆分 vc、标签栏 vc 等其他东西的子视图控制器,否则无法立即看到您的代码有何不同。在这种情况下,请确保父视图控制器也响应您想。与我头顶的 6 Plus 不同的是,它能够在横向中使用拆分视图。也许那里有什么? -
最可能的原因是 iPhone 6+ 的尺寸等级将是常规宽度,但在 landscaoe 中呈现时,对于所有其他 iphone 来说都是紧凑宽度。它是什么样的控制器:普通的视图控制器或容器。如果是模态呈现,相信你需要使用
preferredInterfaceOrientationForPresentation -
根据文档,
supportedInterfaceOrientations只会在根视图控制器上调用,或者在呈现为占据整个屏幕的控制器上调用。因此,您在 iPhone 6+ 上实现此功能的控制器可能不符合标准。它是什么样的控制器?似乎您通常应该在 UINavigationController、UITabBarController 和 UISplitViewController 等主容器控制器中实现supportedInterfaceOrientations。
标签: ios objective-c swift uikit iphone-6-plus