螢幕旋轉學習筆記

2021-06-20 13:23:29 字數 1358 閱讀 9261

加速計是整個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)螢幕旋轉時的一些建議

wince螢幕旋轉

wince4.2以上 dk2440 drivers display s3c2440lcd s3c2440disp.cpp中 s3c2440disp s3c2440disp void 由此可看出,改變登錄檔中相應位置就可改變旋轉角度.為了驗證,直接通過pb的遠端修改登錄檔工具修改 hkey local...

IOS螢幕旋轉

本部分 感謝原作者分享!螢幕旋轉學習筆記 加速計是整個ios螢幕旋轉的基礎,依賴加速計,裝置才可以判斷出當前的裝置方向,ios系統共定義了以下七種裝置方向 typedef ns enum nsinteger,uideviceorientation 以及如下四種介面方向 typedef ns enum...

iOS 螢幕旋轉

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