我們在做頁面橫豎屏處理的時候無外乎涉及到三個方面的設(shè)置,但之前并不理解這幾種設(shè)置的作用方式,今天按照自己的理解來梳理一下。
優(yōu)先級:1>2>3。

1、xcode設(shè)置:比如,我們在xcode設(shè)置里面所有方向都勾選了,那么我們的app是支持所有方向旋轉(zhuǎn)的。所以在這里,我們要想好app的主要支持方向,多數(shù)app是主要支持豎屏頁面的,所以一般只會勾選Portrait。那也就意味著,如果我們不做多余處理,app只支持豎屏。

2、AppDelegate設(shè)置:上面說了,app是主要支持豎屏的,但會涉及到一些橫屏頁面的處理,比如:播放器。那我們就需要在AppDeleagte里面設(shè)置支持橫屏和豎屏,LandscapeRight、LandscapeLeft、Portrait。這里設(shè)置的意義在于,我不希望應(yīng)用跟隨設(shè)備進行旋轉(zhuǎn),但我又希望app內(nèi)部支持橫屏頁面。

3、ViewController設(shè)置:能走到這一步說明,我這個頁面是需要特殊處理的,那就涉及到以上三個方法。
第一個方法:是否支持旋轉(zhuǎn),默認為YES。這個顧名思義,就是你希望當前頁面是否跟隨設(shè)備旋轉(zhuǎn)。如果設(shè)置成yes,那你需要保證appdelegate里面是支持多個方向的,否則會崩潰。
第二個方法:頁面支持的方向。如果我們這個頁面只支持右橫屏,那就設(shè)置成LandscapeRight就可以了。
第三個方法:我理解這個方法只針對模態(tài)視圖和rootViewController。比如你要在豎屏頁面present一個橫屏頁面,但又要控制好推出頁面的顯示方向,可在在這設(shè)置。這里要注意,你設(shè)置的方向需要在方法二種做支持,否則會崩潰。
還有一種情況,比如在做ipad應(yīng)用的時候,要求設(shè)備只支持橫屏一個方向,那就在AppDelegate設(shè)置里面return一個方向就可以,后面的方法不需要處理。
現(xiàn)實中的需求比以上我列舉的幾種要復雜的多,但只要能準確理解好以上幾種方法的作用,就可以應(yīng)對不同的產(chǎn)品需求。