关于 iOS 屏幕旋转方向

首先不推荐直接将屏幕旋转方向卡死, 即不推荐在程序设置里面将不同屏幕旋转方向的勾勾去掉, 而是使用其它方法.

在 appdelegate 中的代理方法 supportedInterfaceOrientationsFor 设置旋转方向, 这个方法实际和打勾勾是一个道理.... 没有实现这个方法的时候, 使用的是 Info.plist 里面规定的值(也即打钩的值), 否则使用的是这个方法提供的值.

这个方法里面提供的值会和最顶层控制器(或最上面一个显示的控制器)支持的旋转方向求交集, 从而确定顶层控制器的旋转方向.

比如打钩了四个可选方向, 然后在代理方法中这样设置:

    func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
        return [.portrait, .landscapeLeft]
    }

而顶层控制器中重写支持的旋转方向:

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return .landscapeLeft    // landscapeLeft 是页面左上角靠近 home 按钮的水平显示模式
    }

则该顶层控制器只可旋转到左上角是靠近 Home 按钮的水平显示模式.

而如果上面代码中顶层控制器支持的旋转改变为如下:

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return [.landscapeLeft, .portrait]
    }

则既可以水平靠 Home 旋转, 又可以竖直旋转.

你可能感兴趣的:(关于 iOS 屏幕旋转方向)