国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

關于iOS屏幕旋轉的一些注意事項

2019-10-21 18:49:04
字體:
來源:轉載
供稿:網友

前言

最近有個需求,是在App中有一個查看文件的頁面,由于查看文件橫屏會更方便閱讀,所以boss說要讓這個頁面可以橫屏。之前都沒有接觸過橫屏的具體實現方法,一開始走了不少彎路,而且各種bug。在這里把遇到的問題分享一下,希望對大家有點幫助。

要讓你的APP支持旋轉,你需要進行如下幾個步驟

1、 全局配置

在工程->TARGETS->General->Deployment Info中配置

ios10屏幕旋轉,ios監聽屏幕旋轉,ios,屏幕旋轉適配

在AppDelegate中配置

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { return UIInterfaceOrientationMaskAllButUpsideDown;}

2、 全局配置做好了,你就可以在控制器中實現相應的旋轉方法來讓你的APP支持旋轉了

我們需要在什么地方實現控制器的旋轉方法呢?

有以下兩種情況

1、當前控制器是window的rootViewController由rootViewController來管理旋轉的相關方法

典型的有 UINavigationController、UITableBarController

2、當前控制器是modal模式的時(控制器為modal顯示的控制器),由該控制器自己管理旋轉的相關方法

即控制器是通過 presentViewController:animated:completion: 方式出來的

控制器的旋轉方法介紹

控制器的旋轉方法在iOS6之前和之后有了比較大的變化

1、在iOS6 之前只需要實現下面這個方法就可以

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight); }

2、在iOS6之后由下面兩個方法替代

//是否支持旋轉- (BOOL)shouldAutorotate { return YES; }//所支持的方法集合,是一個枚舉類- (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; }

下面我重點講一下在iOS6之后旋轉方法的使用情況。因為在iOS6+、7、8中和iOS9中這兩個方法的調用順序以及處理邏輯是不一樣的(坑)

控制器的旋轉方法使用

1、iOS6+、7、8中會先調用shouldAutorotate判斷屏幕是否支持旋轉

  1. 該方法返回YES,就會去調用supportedInterfaceOrientations檢查控制器支持的方向枚舉集合,如果存在符合設備所處的方向枚舉集合,屏幕會執行相應的旋轉,如果不存在設備所處的方向枚舉,屏幕就不會旋轉,停止檢查
  2. 該方法返回NO,屏幕不能夠旋轉,停止檢查

2、iOS9+中會先調用supportedInterfaceOrientations來檢查控制器支持的方向枚舉集合

  1. 如果方向枚舉集合中沒有符合設備所處的方向枚舉,就不會去調用shouldAutorotate方法,屏幕不會旋轉,停止檢查
  2. 如果方向枚舉集合中有符合設備所處的方向枚舉,那么就會去調用shouldAutorotate方法

             如果該返回YES,屏幕執行相應的旋轉

             如果該返回NO,屏幕不會旋轉,停止檢查

3、關于preferredInterfaceOrientationForPresentation方法,該方法的作用是返回最優先顯示的屏幕方向。在iOS7之后就不會調用了,但是網上說在iOS7之前需要加上,不加會崩潰(沒有親測)

總結

寫這邊文章主要是因為之前在網上看了很多資料,但是并有提到旋轉方法他們的調用順序以及處理邏輯的介紹,大部分都是抄來抄去,沒有經過自己試驗的代碼也貼到網上來,坑了我千萬遍。

以上就是這篇文章的全部內容了,希望本文的內容對各位Android開發者們能有一定的幫助,親身試驗的東西才是硬道理,如果有疑問大家可以留言交流。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿城市| 象山县| 田林县| 内乡县| 丰顺县| 怀远县| 株洲市| 涞源县| 钦州市| 临桂县| 洛浦县| 城步| 千阳县| 安西县| 合作市| 泸水县| 吴旗县| 和平县| 连南| 辽阳市| 许昌县| 汝州市| 永和县| 通辽市| 仪陇县| 怀仁县| 清镇市| 祁连县| 平昌县| 贞丰县| 理塘县| 彭州市| 苍溪县| 当阳市| 林口县| 抚顺市| 洞口县| 阿瓦提县| 余庆县| 呼图壁县| 鄂伦春自治旗|