網上關于橫豎屏切換的資料很多,但是很容易踩到坑,不是屏幕不旋轉,就是屏幕旋轉后沒有狀態欄等,在寫的小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