<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      IOS:屏幕旋轉(zhuǎn)學(xué)習(xí)筆記

      屏幕旋轉(zhuǎn)學(xué)習(xí)筆記

       

        加速計是整個IOS屏幕旋轉(zhuǎn)的基礎(chǔ),依賴加速計,設(shè)備才可以判斷出當(dāng)前的設(shè)備方向,IOS系統(tǒng)共定義了以下七種設(shè)備方向:

      typedef NS_ENUM(NSInteger, UIDeviceOrientation) {
          UIDeviceOrientationUnknown,
          UIDeviceOrientationPortrait,            // Device oriented vertically, home button on the bottom
          UIDeviceOrientationPortraitUpsideDown,  // Device oriented vertically, home button on the top
          UIDeviceOrientationLandscapeLeft,       // Device oriented horizontally, home button on the right
          UIDeviceOrientationLandscapeRight,      // Device oriented horizontally, home button on the left
          UIDeviceOrientationFaceUp,              // Device oriented flat, face up
          UIDeviceOrientationFaceDown             // Device oriented flat, face down
      };

         以及如下四種界面方向:

      typedef NS_ENUM(NSInteger, UIInterfaceOrientation) {
          UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,
          UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
          UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,
          UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft
      };
       

      一、UIKit處理屏幕旋轉(zhuǎn)的流程 

        當(dāng)加速計檢測到方向變化的時候,會發(fā)出 UIDeviceOrientationDidChangeNotification 通知,這樣任何關(guān)心方向變化的view都可以通過注冊該通知,在設(shè)備方向變化的時候做出相應(yīng)的響應(yīng)。上一篇博客中,我們已經(jīng)提到了在屏幕旋轉(zhuǎn)的時候,UIKit幫助我們做了很多事情,方便我們完成屏幕旋轉(zhuǎn)。

        UIKit的相應(yīng)屏幕旋轉(zhuǎn)的流程如下:

      1、設(shè)備旋轉(zhuǎn)的時候,UIKit接收到旋轉(zhuǎn)事件。

      2、UIKit通過AppDelegate通知當(dāng)前程序的window。

      3、Window會知會它的rootViewController,判斷該view controller所支持的旋轉(zhuǎn)方向,完成旋轉(zhuǎn)。

      4、如果存在彈出的view controller的話,系統(tǒng)則會根據(jù)彈出的view controller,來判斷是否要進(jìn)行旋轉(zhuǎn)。

       

      二、UIViewController實現(xiàn)屏幕旋轉(zhuǎn)

        在響應(yīng)設(shè)備旋轉(zhuǎn)時,我們可以通過UIViewController的方法實現(xiàn)更細(xì)粒度的控制,當(dāng)view controller接收到window傳來的方向變化的時候,流程如下:

      1、首先判斷當(dāng)前viewController是否支持旋轉(zhuǎn)到目標(biāo)方向,如果支持的話進(jìn)入流程2,否則此次旋轉(zhuǎn)流程直接結(jié)束。

      2、調(diào)用 willRotateToInterfaceOrientation:duration: 方法,通知view controller將要旋轉(zhuǎn)到目標(biāo)方向。如果該viewController是一個container view controller的話,它會繼續(xù)調(diào)用其content view controller的該方法。這個時候我們也可以暫時將一些view隱藏掉,等旋轉(zhuǎn)結(jié)束以后在現(xiàn)實出來。

      3、window調(diào)整顯示的view controller的bounds,由于view controller的bounds發(fā)生變化,將會觸發(fā) viewWillLayoutSubviews 方法。這個時候self.interfaceOrientationstatusBarOrientation方向還是原來的方向。

      4、接著當(dāng)前view controller的 willAnimateRotationToInterfaceOrientation:duration: 方法將會被調(diào)用。系統(tǒng)將會把該方法中執(zhí)行的所有屬性變化放到動animation block中。

      5、執(zhí)行方向旋轉(zhuǎn)的動畫。

      6、最后調(diào)用 didRotateFromInterfaceOrientation: 方法,通知view controller旋轉(zhuǎn)動畫執(zhí)行完畢。這個時候我們可以將第二部隱藏的view再顯示出來。

        整個響應(yīng)過程如下圖所示:

        

        以上就是UIKit下一個完整的屏幕旋轉(zhuǎn)流程,我們只需要按照提示做出相應(yīng)的處理就可以完美的支持屏幕旋轉(zhuǎn)。

       

      三、注意事項和建議

        1)注意事項

        當(dāng)我們的view controller隱藏的時候,設(shè)備方向也可能發(fā)生變化。例如view Controller A彈出一個全屏的view controller B的時候,由于A完全不可見,所以就接收不到屏幕旋轉(zhuǎn)消息。這個時候如果屏幕方向發(fā)生變化,再dismiss B的時候,A的方向就會不正確。我們可以通過在view controller A的viewWillAppear中更新方向來修正這個問題。

        2)屏幕旋轉(zhuǎn)時的一些建議

      • 在旋轉(zhuǎn)過程中,暫時界面操作的響應(yīng)。
      • 旋轉(zhuǎn)前后,盡量當(dāng)前顯示的位置不變。
      • 對于view層級比較復(fù)雜的時候,為了提高效率在旋轉(zhuǎn)開始前使用截圖替換當(dāng)前的view層級,旋轉(zhuǎn)結(jié)束后再將原view層級替換回來。
      • 在旋轉(zhuǎn)后最好強(qiáng)制reload tableview,保證在方向變化以后,新的row能夠充滿全屏。例如對于有些照片展示界面,豎屏只顯示一列,但是橫屏的時候顯示列表界面,這個時候一個界面就會顯示更多的元素,此時reload內(nèi)容就是很有必要的。

       

        注:以上內(nèi)容和插圖全部來自蘋果官方文檔:View Controller Programming Guide for iOS

      posted on 2013-04-24 23:28  一片-楓葉  閱讀(24515)  評論(2)    收藏  舉報

      主站蜘蛛池模板: 狠狠做五月深爱婷婷天天综合| 日韩美少妇大胆一区二区| 婷婷色婷婷深深爱播五月| 少妇高潮喷水正在播放| 久青草视频在线观看免费| 国产精品综合在线免费看| 国产精品XXXX国产喷水| 国产国产午夜福利视频| 成人啪啪高潮不断观看| 中文字幕在线永久免费视频| 狠狠亚洲色一日本高清色| 五月天丁香婷婷亚洲欧洲国产| 久久这里精品国产99丫E6| 穆棱市| 国产亚洲综合一区二区三区| 日韩高清国产中文字幕| 老司机午夜免费精品视频| 福利网午夜视频一区二区| 少妇人妻偷人一区二区| 又黄又爽又色的少妇毛片| 日韩乱码人妻无码中文字幕视频| 国产精品一区二区三区三级| 亚洲欧美色一区二区三区| 大地资源免费视频观看| 精品无码一区在线观看| 精品中文字幕一区在线| 国产成人一区二区不卡| 婷婷色综合视频在线观看| 亚洲男人成人性天堂网站| 国产破外女出血视频| av天堂午夜精品一区| 91精品国产91热久久久久福利 | 国产美女裸身网站免费观看视频| 欧美亚洲日本国产综合在线美利坚| 砀山县| 女人与牲口性恔配视频免费| av日韩精品在线播放| 午夜高清福利在线观看| 国产一精品一av一免费| 国产普通话对白刺激| 成在线人视频免费视频|