iOS中如何设置手机横屏进入App首屏保持竖屏

在平时开发中,我们经常会忽略一个问题,就是当我们的App内有需要横屏的页面,而首页只支持竖屏,在plus的设备上,桌面是运行横屏的,此时进入App,首页布局会出错。在延伸一下这个问题,当我们开发一款支持iPad的App时,如何保证App在任何情况下进入首页都保持竖屏状态?

方法一、

我们可以这样设置首页的控制器:

    // 必须两个都是 .portrait才可以
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return .portrait
    }
    
    override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
        return .portrait
    }

如果有UITabBarController,这样设置:

    // 必须两个都是 .portrait才可以
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return selectedViewController?.supportedInterfaceOrientations ?? .portrait
    }
    
    override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
        return selectedViewController?.preferredInterfaceOrientationForPresentation ?? .portrait
    }

如果有 UINavigationController,这样设置:

    // 必须两个都是 .portrait才可以保证首页一定是竖屏
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return topViewController?.supportedInterfaceOrientations ?? .portrait
    }
    
    override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
        return topViewController?.preferredInterfaceOrientationForPresentation ?? .portrait
    }

方法二、

设置一个全局的变量

var isAllowLandscape: Bool = false

在AppDelegate中设置:

    // 控制整个App所允许旋转的方向
    func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
        return isAllowLandscape ? .allButUpsideDown : .portrait
    }

在需要的时候改变 isAllowLandscape的值即可。

你可能感兴趣的:(iOS中如何设置手机横屏进入App首屏保持竖屏)