加速計是整個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...