在将控制器视为横向时,在App代理中锁定纵向视图

时间:2018-03-12 18:47:45

标签: ios swift landscape

除了一个视图控制器外,我需要将整个应用程序锁定在PortraitView中。我需要这些功能的功能,但我得到两个错误。当我添加视图控制器功能应用程序崩溃。如果我拿走了app代理,视图控制器也会执行我需要的操作。

应用代表

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {

        return UIInterfaceOrientationMask(rawValue: UIInterfaceOrientationMask.portrait.rawValue)
    }

的ViewController

 override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return .landscapeRight
    }

    override var shouldAutorotate: Bool {
        return true
    }

1 个答案:

答案 0 :(得分:1)

编辑使用基本控制器视图:

我记得是否为应用启用了方向。需要为每个需要限制它的控制器实现方向功能。

或者,创建支持Portrait的Base UIViewController。它应该由所有控制器继承,并且只覆盖横向控制器中的方向功能。

如下所示:

class BaseViewController : UIViewController {
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return .Portrait...
    }
}

class ViewController1: BaseViewController {
    // nothin to override
}

class LandscapeController: BaseViewController {
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return .landscapeRight
    }
}