接手一个项目,其中部分页面是横屏、部分页面是竖屏。
求助百度、谷歌很久,找不到完美解决方案,尤其是许多方案使用了苹果私有或即将舍弃的API。
结果反复试错,得出一种目前看来完美的解决方法:项目设置里,选中APP支持的屏幕方向;重写页面对应的UIViewController里的三个方法,固定页面屏幕方向。
下面以支持左横屏和竖屏的APP为例,记录实现方法。
1、设置APP支持左横屏和竖屏。
2、针对竖屏页面,重写控制器以下3个方法
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask
{
return UIInterfaceOrientationMask.Portrait
}
override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
return UIInterfaceOrientation.Portrait
}
3、针对横屏页面,重写控制器以下3个方法
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask
{
return UIInterfaceOrientationMask.LandscapeLeft
}
override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
return UIInterfaceOrientation.LandscapeLeft;
}