你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> iOS6的旋屏控制技巧

iOS6的旋屏控制技巧

編輯:關於IOS

在iOS5.1 和 之前的版本中, 我們通常利用 shouldAutorotateToInterfaceOrientation: 來單獨控制某個UIViewController的旋屏方向支持,比如:

  1. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  2. {
  3. return (interfaceOrientation == UIInterfaceOrientationPortrait);
  4. }

    但是在iOS6中,這個方法被廢棄了,使用無效。

    shouldAutorotateToInterfaceOrientation:

    Returns a Boolean value indicating whether the view controller supports the specified orientation. (Deprecated in iOS 6.0. Override the supportedInterfaceOrientations andpreferredInterfaceOrientationForPresentation methods instead.)

    實踐後會發現,通過supportedInterfaceOrientations的單獨控制是無法鎖定屏幕的。

    1. -(NSUInteger)supportedInterfaceOrientations
    2. {
    3. return UIInterfaceOrientationMaskPortrait;
    4. }

      多次實驗後總結出控制屏幕旋轉支持方向的方法如下:

      子類化UINavigationController,增加方法

      1. - (BOOL)shouldAutorotate
      2. {
      3. return self.topViewController.shouldAutorotate;
      4. }
      5. - (NSUInteger)supportedInterfaceOrientations
      6. {
      7. return self.topViewController.supportedInterfaceOrientations;
      8. }
        並且設定其為程序入口,或指定為 self.window.rootViewController

        隨後添加自己的view controller,如果想禁止某個view controller的旋屏:(支持全部版本的控制)

        1. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
        2. {
        3. return (interfaceOrientation == UIInterfaceOrientationPortrait);
        4. }
        5. -(BOOL)shouldAutorotate
        6. {
        7. return NO;
        8. }
        9. -(NSUInteger)supportedInterfaceOrientations
        10. {
        11. return UIInterfaceOrientationMaskPortrait;
        12. }

          如果想又開啟某個view controller的全部方向旋屏支持:

          1. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
          2. {
          3. return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
          4. }
          5. -(NSUInteger)supportedInterfaceOrientations
          6. {
          7. return UIInterfaceOrientationMaskAllButUpsideDown;
          8. }
          9. -(BOOL)shouldAutorotate
          10. {
          11. return YES;
          12. }

            從而實現了對每個view controller的單獨控制。

            順便提一下,如果整個應用所有view controller都不支持旋屏,那麼干脆:

            1. - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
            2. {
            3. return UIInterfaceOrientationMaskPortrait;
            4. }
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved