關(guān)于IOS中的屏幕部分旋轉(zhuǎn)

在做開發(fā)的時(shí)候經(jīng)常碰到個(gè)別頁(yè)面需要橫屏的需求,比如播放視頻之類的。以前本人的習(xí)慣是把屏幕自動(dòng)旋轉(zhuǎn)關(guān)掉,所以大部分時(shí)候都是Portrait狀態(tài),除非使用一些視頻游戲應(yīng)用的時(shí)候才會(huì)變成Landscape。當(dāng)然也會(huì)有人是常年打開自動(dòng)旋轉(zhuǎn)的,上次在測(cè)試一個(gè)app的時(shí)候,機(jī)主就是這樣的人,由于沒有注意這個(gè)問題導(dǎo)致有些界面因?yàn)闄M豎切換的原因顯示混亂(當(dāng)然這些東西完成可以用AutoLayout調(diào)好)其實(shí)這個(gè)問題很好解決,只要把下圖中LandscapeLeft和LandscapeRight的勾勾去掉即可。



可是問題來(lái)了如果遇到程序中需要部分旋轉(zhuǎn)的情況我們?cè)撊绾翁幚砟兀课覀冞@里暫時(shí)不考慮用transform的情況,和大家交流一下shouldAutorotate的使用。用shouldAutorotate實(shí)現(xiàn)一個(gè)ViewController的旋轉(zhuǎn)需要在ViewController中實(shí)現(xiàn)下面三個(gè)方法:

    override func shouldAutorotate() -> Bool {
        return false
    }
    
    override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
        return .Portrait
    }

    override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
        return .Portrait
    }

一、關(guān)于shouldAutorotate文檔里有許多的詳細(xì)的描寫,由于英文一般簡(jiǎn)單理解就是這個(gè)ViewController能不能旋轉(zhuǎn),如果return值是false時(shí)這個(gè)ViewController不能旋轉(zhuǎn)反之則可以旋轉(zhuǎn)。
二、supportedInterfaceOrientations這個(gè)是此ViewController支持的方向有七種分別是:

public struct UIInterfaceOrientationMask : OptionSetType {
    public init(rawValue: UInt)
    
    public static var Portrait: UIInterfaceOrientationMask { get }
    public static var LandscapeLeft: UIInterfaceOrientationMask { get }
    public static var LandscapeRight: UIInterfaceOrientationMask { get }
    public static var PortraitUpsideDown: UIInterfaceOrientationMask { get }
    public static var Landscape: UIInterfaceOrientationMask { get }
    public static var All: UIInterfaceOrientationMask { get }
    public static var AllButUpsideDown: UIInterfaceOrientationMask { get }
}

這些方向均是Home鍵所在方向:
1.支持Home鍵朝下
2.支持Home鍵在左
3.支持Home鍵在右
4.支持Home鍵朝上
5.支持Home鍵在左右
6.支持所有方向
7.支持除Home鍵朝上以外的所有方向
如果此方法的返回值與 AppDelegate中supportedInterfaceOrientationsForWindow的返回值能夠?qū)?yīng)的話,此ViewController會(huì)支持supportedInterfaceOrientations所返回的方向,也就是整個(gè)程序所支持的旋轉(zhuǎn)方向必須包含ViewController的支持方向。
三、preferredInterfaceOrientationForPresentation方法在文檔中是這樣解釋的:


preferredInterfaceOrientationForPresentation

當(dāng)此ViewController支持多個(gè)方向的時(shí)候最優(yōu)先顯示的屏幕方向。
注:preferredInterfaceOrientationForPresentation這個(gè)方法是我著重要說(shuō)的,因?yàn)槲以诔绦虻拈_發(fā)中發(fā)現(xiàn)這個(gè)方法一直不執(zhí)行,在網(wǎng)上也查了很多例子發(fā)現(xiàn)沒有說(shuō)的很明白的,自己在測(cè)試中發(fā)現(xiàn)當(dāng)頁(yè)面presentViewController的時(shí)候會(huì)執(zhí)行,而常用的pushViewController時(shí)不會(huì)執(zhí)行,原因應(yīng)該是rootViewController的問題,也就是只有rootViewController才會(huì)執(zhí)行presentViewController(如果這個(gè)地方有異議或者更好的解釋,可以請(qǐng)大家指出一起交流)。
由于上面preferredInterfaceOrientationForPresentation的問題在pushViewController的時(shí)候無(wú)法使我們的頁(yè)面橫屏,所以需要借助強(qiáng)制旋轉(zhuǎn)方法(參數(shù)是要旋轉(zhuǎn)的方向):

UIDevice.currentDevice().setValue(UIInterfaceOrientation.LandscapeLeft.rawValue, forKey: "orientation")

至此關(guān)于shouldAutorotate部分屏幕旋轉(zhuǎn)的內(nèi)容就是這些了,附上demo地址https://github.com/Adverslty/RotationDome
demo里也有關(guān)于Statusbar在旋轉(zhuǎn)中的的顯示與隱藏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,963評(píng)論 6 542
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,348評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,083評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,706評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,442評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,802評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,795評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,983評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,542評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,287評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,486評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,030評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,710評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,116評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,412評(píng)論 1 294
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,224評(píng)論 3 398
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,462評(píng)論 2 378

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