代码之家  ›  专栏  ›  技术社区  ›  mojomo

修复iPad上的方向

  •  0
  • mojomo  · 技术社区  · 9 年前

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

    1 回复  |  直到 9 年前
        1
  •  1
  •   KidIcarus271    9 年前

    您可以在设置中“允许”所有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中都包含它。