iOS屏幕旋轉(zhuǎn)的一些坑

前言

這段時間公司由于有個需求,就是在App中有一個查看文件的頁面,由于查看文件橫屏會更方便閱讀滑凉,所以boss說要讓這個頁面可以橫屏谓谦。之前都沒有接觸過橫屏的具體實現(xiàn)方法贫橙,一開始走了不少彎路,而且各種bug反粥。在這里把遇到的問題分享一下卢肃,希望對大家有點幫助。

要讓你的APP支持旋轉(zhuǎn)才顿,你需要進行如下幾個步驟

1莫湘、 全局配置

  • 在工程->TARGETS->General->Deployment Info中配置
屏幕快照 2016-08-26 上午9.47.08.png
  • 在AppDelegate中配置
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

2、 全局配置做好了郑气,你就可以在控制器中實現(xiàn)相應(yīng)的旋轉(zhuǎn)方法來讓你的APP支持旋轉(zhuǎn)了

我們需要在什么地方實現(xiàn)控制器的旋轉(zhuǎn)方法呢幅垮?有以下兩種情況

  1. 當前控制器是window的rootViewController由rootViewController來管理旋轉(zhuǎn)的相關(guān)方法
    典型的有 UINavigationController、UITableBarController
  2. 當前控制器是modal模式的時(控制器為modal顯示的控制器)尾组,由該控制器自己管理旋轉(zhuǎn)的相關(guān)方法
    即控制器是通過 presentViewController:animated:completion: 方式出來的

控制器的旋轉(zhuǎn)方法介紹

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

  1. 在iOS6 之前只需要實現(xiàn)下面這個方法就可以
 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
      return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft ||  interfaceOrientation == UIInterfaceOrientationLandscapeRight);  
}
  1. 在iOS6之后由下面兩個方法替代
//是否支持旋轉(zhuǎn)
 - (BOOL)shouldAutorotate  {
      return YES; 
 }
//所支持的方法集合忙芒,是一個枚舉類
 - (NSUInteger)supportedInterfaceOrientations {
      return UIInterfaceOrientationMaskLandscape;  
}

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

控制器的旋轉(zhuǎn)方法使用

  1. iOS6+、7爷耀、8中會先調(diào)用shouldAutorotate判斷屏幕是否支持旋轉(zhuǎn)
  • 該方法返回YES甘桑,就會去調(diào)用supportedInterfaceOrientations檢查控制器支持的方向枚舉集合,如果存在符合設(shè)備所處的方向枚舉集合,屏幕會執(zhí)行相應(yīng)的旋轉(zhuǎn)跑杭,如果不存在設(shè)備所處的方向枚舉铆帽,屏幕就不會旋轉(zhuǎn),停止檢查
  • 該方法返回NO德谅,屏幕不能夠旋轉(zhuǎn)爹橱,停止檢查
  1. iOS9+中會先調(diào)用supportedInterfaceOrientations來檢查控制器支持的方向枚舉集合
  • 如果方向枚舉集合中沒有符合設(shè)備所處的方向枚舉,就不會去調(diào)用shouldAutorotate方法窄做,屏幕不會旋轉(zhuǎn)愧驱,停止檢查
  • 如果方向枚舉集合中有符合設(shè)備所處的方向枚舉,那么就會去調(diào)用shouldAutorotate方法
    • 如果該返回YES椭盏,屏幕執(zhí)行相應(yīng)的旋轉(zhuǎn)
    • 如果該返回NO组砚,屏幕不會旋轉(zhuǎn),停止檢查
  1. 關(guān)于preferredInterfaceOrientationForPresentation方法掏颊,該方法的作用是返回最優(yōu)先顯示的屏幕方向糟红。在iOS7之后就不會調(diào)用了,但是網(wǎng)上說在iOS7之前需要加上乌叶,不加會崩潰(沒有親測)

總結(jié)

寫這邊文章主要是因為之前在網(wǎng)上看了很多資料盆偿,但是并有提到旋轉(zhuǎn)方法他們的調(diào)用順序以及處理邏輯的介紹,大部分都是抄來抄去准浴,沒有經(jīng)過自己試驗的代碼也貼到網(wǎng)上來事扭,坑了我千萬遍。
??希望大家以后遇到問題還是自己多實踐乐横,親身試驗的東西才是硬道理求橄。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末晰奖,一起剝皮案震驚了整個濱河市谈撒,隨后出現(xiàn)的幾起案子腥泥,更是在濱河造成了極大的恐慌匾南,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛔外,死亡現(xiàn)場離奇詭異蛆楞,居然都是意外死亡,警方通過查閱死者的電腦和手機夹厌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門豹爹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人矛纹,你說我怎么就攤上這事臂聋。” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵孩等,是天一觀的道長艾君。 經(jīng)常有香客問我,道長肄方,這世上最難降的妖魔是什么冰垄? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮权她,結(jié)果婚禮上虹茶,老公的妹妹穿的比我還像新娘。我一直安慰自己隅要,他們只是感情好蝴罪,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著步清,像睡著了一般洲炊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尼啡,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天暂衡,我揣著相機與錄音,去河邊找鬼崖瞭。 笑死狂巢,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的书聚。 我是一名探鬼主播唧领,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼雌续!你這毒婦竟也來了斩个?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤驯杜,失蹤者是張志新(化名)和其女友劉穎受啥,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸽心,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡滚局,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了顽频。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藤肢。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖糯景,靈堂內(nèi)的尸體忽然破棺而出嘁圈,到底是詐尸還是另有隱情省骂,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布最住,位于F島的核電站冀宴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏温学。R本人自食惡果不足惜略贮,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仗岖。 院中可真熱鬧逃延,春花似錦、人聲如沸轧拄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽檩电。三九已至拄丰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間俐末,已是汗流浹背料按。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留卓箫,地道東北人载矿。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像烹卒,于是被迫代替她去往敵國和親闷盔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容