在iPad上修复方向

时间:2016-01-24 16:22:22

标签: ios xcode swift ipad orientation

我的应用只需要Portrait和PortraitUpsideDown。在目标的部署信息中,我只检查了这两个。在Info.plist中,所有四个都可用。当我从Info-plist中删除Landscapes时,Xcode不会让我构建,说我需要支持所有四个。现在,在通过TestFligh运行应用程序后,它仍会返回Landscape,尽管在部署信息中未选中。我怎么能摆脱这个?

1 个答案:

答案 0 :(得分:1)

你可以"允许"您设置中的所有4个选项,但随后自行控制方向。

我在里面创建一个自定义UINavigation控制器(Swift):

import UIKit

class MyCustomNavigationController: UINavigationController {
    override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
        return (visibleViewController?.supportedInterfaceOrientations())!
    }

    override func shouldAutorotate() -> Bool {
        return (visibleViewController?.shouldAutorotate())!
    }
}

然后,在每个要强制进入特定方向的ViewControllers中,包含以下内容:

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.Landscape // Or portrait
}

override func shouldAutorotate() -> Bool {
    return true
}

这样您可以允许所有方向,但仍然可以控制视图本身。如果您希望所有视图都相同(例如横向),您可以为所有视图控制器创建一个自定义基类,其中包含第二组代码,并且您不必将它包含在每个视图中VC。