iOS 横竖屏切换

网上关于横竖屏切换的资料很多,但是很容易踩到坑,不是屏幕不旋转,就是屏幕旋转后没有状态栏等,在写的小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

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两个方法就可以了

图3

横竖屏demo链接

你可能感兴趣的:(iOS 横竖屏切换)