IOS螢幕旋轉

2021-06-18 23:18:27 字數 1412 閱讀 1147

本部分**感謝原作者分享!

螢幕旋轉學習筆記

加速計是整個ios螢幕旋轉的基礎,依賴加速計,裝置才可以判斷出當前的裝置方向,ios系統共定義了以下七種裝置方向:

typedef

ns_enum(nsinteger, uideviceorientation) ;

以及如下四種介面方向:

typedef

ns_enum(nsinteger, uiinte***ceorientation) ;

一、uikit處理螢幕旋轉的流程 

uikit的相應螢幕旋轉的流程如下:

1、裝置旋轉的時候,uikit接收到旋轉事件。

3、window會知會它的rootviewcontroller,判斷該view controller所支援的旋轉方向,完成旋轉。

4、如果存在彈出的view controller的話,系統則會根據彈出的view controller,來判斷是否要進行旋轉。

二、uiviewcontroller實現螢幕旋轉

在響應裝置旋轉時,我們可以通過uiviewcontroller的方法實現更細粒度的控制,當view controller接收到window傳來的方向變化的時候,流程如下:

1、首先判斷當前viewcontroller是否支援旋轉到目標方向,如果支援的話進入流程2,否則此次旋轉流程直接結束。

方法,通知view controller將要旋轉到目標方向。

如果該viewcontroller是乙個container view 

controller的話,它會繼續呼叫其content view controller的該方法。這個時候我們也可以暫時將一些view隱藏掉,等旋轉結束以後在現實出來。

3、window調整顯示的view controller的bounds,由於view controller的bounds發生變化,將會觸發 

self.inte***ceorientation

和statusbarorientation方向還是原來的方向。

方法將會被呼叫。系統將會把該方法中執行的所有屬性變化

放到動animation block中。

5、執行方向旋轉的動畫。

6、最後呼叫

方法,通知view controller旋轉動畫執行完畢。這個時候我們可以將第二部隱藏的view再顯示出來。

整個響應過程如下圖所示:

以上就是uikit下乙個完整的螢幕旋轉流程,我們只需要按照提示做出相應的處理就可以完美的支援螢幕旋轉。

三、注意事項和建議

1)注意事項

當我們的view controller隱藏的時候,裝置方向也可能發生變化。

2)螢幕旋轉時的一些建議

iOS 螢幕旋轉

cpp view plain copy void willrotatetointe ceorientation uiinte ceorientation tointe ceorientation duration nstimeinterval duration else cpp view plain...

iOS螢幕旋轉

專案需求是在導航欄基類下保持豎屏,步驟如下 第一步如下圖,表示裝置只支援豎屏 第二步,通過繼承導航類建立乙個類,在該類裡面實現以下方法 bool shouldautorotate uiinte ceorientationmask supportedinte ceorientations 然後在導航子...

iOS開發 螢幕旋轉

設定 當前檢視控制器 支援旋轉的方向 bool shouldautorotate 設定當前檢視控制器 支援旋轉的方向 nsuinteger supportedinte ceorientations 設定 螢幕旋轉並且控制view上檢視在橫屏和豎屏狀態居中 重寫layoutsubviews方法 voi...