項目僅支持豎屏,特定頁面支持橫屏(二)

     方法很簡單:
     第一步:監聽屏幕是否翻轉的通知
      [[NSNotificationCenterdefaultCenter] addObserver:self selector:@selector(deviceOrientationDidChange:) name:UIDeviceOrientationDidChangeNotification object:nil];
   第二步:寫監聽後調用的方法(主要目的就是隱藏狀態欄和導航欄)
      - (void)deviceOrientationDidChange:(NSNotification *)notif {
    UIDeviceOrientation orientation = [UIDevicecurrentDevice].orientation;
    BOOL isPortrait = orientation == UIDeviceOrientationPortrait;
    [self.navigationControllersetNavigationBarHidden:!isPortrait animated:YES];
    [[UIApplicationsharedApplication] setStatusBarHidden:!isPortrait withAnimation:UIStatusBarAnimationFade];
}
    第三步:在將要出現的頁面和將要消失的頁面寫清是否容許旋轉,消失的時候把監聽移除
     - (void)viewDidAppear:(BOOL)animated {
    [superviewDidAppear:animated];
    AppDelegate *appdelegate = [UIApplicationsharedApplication].delegate;
    appdelegate.allowMaskAllOrientations = YES;
}

- (void)viewWillDisappear:(BOOL)animated {
    [superviewWillDisappear:animated];
    AppDelegate *appdelegate = [UIApplicationsharedApplication].delegate;
    appdelegate.allowMaskAllOrientations = NO;
    [[NSNotificationCenterdefaultCenter] removeObserver:self
                                                    name:UIDeviceOrientationDidChangeNotification
                                                  object:nil];
}
     第四步:在AppDelegate.h中補上上邊的那個判斷橫豎屏的布爾值屬性
      @property (assign, nonatomic) BOOL allowMaskAllOrientations;    // 是否容許旋轉
          第五步:在AppDelegate.m中寫上屏幕旋轉控制的方法(6.0之後纔有的方法,如今都用8.0了)
      - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
    returnself.allowMaskAllOrientations ? UIInterfaceOrientationMaskAll : UIInterfaceOrientationMaskPortrait;
}
   完成。
   很快吧,好像對其餘控制器沒有過特殊設置,並且不用實例化個導航控制器,節省了太多空間了。
     上一種方法是我結合多種外援的產品,比較麻煩,要將每個控制器都寫上兩個方法,是否支持方向旋轉和支持哪一種旋轉方向。不過我一直在考慮,可能寫一個控制器的類,這個類裏邊寫清不支持橫屏的兩個方法,而後讓每一個控制器都去繼承這個控制器,在此基礎上再寫其餘的方法實現。可是我並無實際驗證。而支持橫屏的頁面就正常去建立控制器,而後在控制器中寫好那兩個方法。
     期初,上一種方法是有問題的,可是最近又沒有復現問題,源於記憶,好像是狀態欄會自由的橫豎切換,主要是在不支持橫屏的頁面,我並無找到緣由,也不知道是怎麼纔可固定在頂部。不過這個問題真的再也不復現了,我作了幾回嘗試都沒有了。
     今天這種是有問題的,一個是橫屏後,點擊屏幕沒有變化了,導航欄因爲人工的隱藏,僅可再次豎屏後,才能返回上一頁。另外一個,若是人爲的不去把導航欄隱藏掉的話,導航欄會有問題,又美觀具體我就不復現了。
     那麼第二種是簡單的,工程中不用勾選向左橫屏和向右橫屏,每一個控制器也都不用再設置那兩個方法了,僅在播放的控制器中寫就能夠了。
     我也將第一種方法的實現鏈接附上: http://www.cnblogs.com/guoqiangx-5/p/5501008.html
 本文原創,轉載請附原文連接,謝謝。
相關文章
相關標籤/搜索