网上关于横竖屏切换的资料很多,但是很容易踩到坑,不是屏幕不旋转,就是屏幕旋转后没有状态栏等,在写的小demo里屏幕能够旋转,但是在项目中就不能够旋转,开始猜测是配置的问题,困扰好几天,最后找到问题的根源,现在整理处理出来
有两种情况1、工程中某个界面支持横竖屏 2、每个界面都支持横竖屏
https://gitee.com/myc12/HengShuPingQieHuan.git
一、工程中某个界面支持横竖屏,其他的界面不支持旋转
首先在Info里面配置你支持的方向信息
targets -> General -> Deployment Info
接下来就是在工程中需要写的代码,代码控制屏幕的旋转
1、AppDelegate
(1)定义变量var allowRotation: Bool = false //默认情况下是false, 不支持横竖屏
(2)定义方法
Swift代码
2、要横屏的ViewController
(1) 获取变量
let appDelegate = UIApplication.shared.delegate as! AppDelegate
(2)在需要触发横屏的方法里写以下代码
appDelegate.allowRotation = true // true表示支持横屏
let value = UIInterfaceOrientation.landscapeLeft.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
(3)在需要转回竖屏的方法里这样处理
appDelegate.allowRotation = false // false 表示支持竖屏
let value = UIInterfaceOrientation.portrait.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
注意横竖屏时界面的适配
好了,这样就处理完了,但是可能会遇到屏幕不旋转的情况,这又为什么,别急,查看你的根控制器是哪个控制器,在根控制器里重写下面图3两个方法就可以了