iOS整体竖屏 个别页面横屏

2017-11-15  本文已影响194人  pengkk

个别页面设置横屏时出现了Bug,这里就我遇到的情况做个说明。

iOS竖屏状态下present一个横屏的viewController(继承BaseViewController)出现bug,每次app第一次启动后,会出现如附件中的现象,本应该横屏全屏的界面,结果成了竖屏只有上半边的情况,下半边全黑,再次进入这个页面就不会再出现。

图1.png

这时我在【General】【Device Orientation】中只选择了【Portrait】


图2.png

在需要横屏的ViewController中添加代码:

override var shouldAutorotate: Bool {
        return false
    }

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return .landscapeRight
    }
    
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
        return .landscapeRight
    }
    

解决办法

在【General】【Device Orientation】中选择了【Portrait】和【Landscape Right】,只在AppDelegate中设置

var allowRotation: Bool = false //是否允许转向

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
        if self.allowRotation {
            return .landscapeRight
        } else {
            return .portrait
        }
    }

然后在需要设置横屏的Controller 的 viewDidLoad 函数中设置

if let appDelegate = UIApplication.shared.delegate as? AppDelegate {
            appDelegate.allowRotation = true
        }

在点击返回按钮时重新设置上面的值

if let appDelegate = UIApplication.shared.delegate as? AppDelegate {
            appDelegate.allowRotation = false
        }
上一篇下一篇

猜你喜欢

热点阅读