精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

代碼處理iOS的橫豎屏旋轉

移動開發 iOS
在處理iOS橫豎屏時,經常會和UIDeviceOrientation、UIInterfaceOrientation和UIInterfaceOrientationMask這三個枚舉類型打交道,它們從不同角度描述了屏幕旋轉方向。

一、監聽屏幕旋轉方向

在處理iOS橫豎屏時,經常會和UIDeviceOrientation、UIInterfaceOrientation和UIInterfaceOrientationMask這三個枚舉類型打交道,它們從不同角度描述了屏幕旋轉方向。

1、UIDeviceOrientation:設備方向

iOS的設備方向是通過iOS的加速計來獲取的。

1)iOS定義了以下七種設備方向

  1. typedef NS_ENUM(NSInteger, UIDeviceOrientation) { 
  2.  
  3.     UIDeviceOrientationUnknown,                 // 未知方向,可能是設備(屏幕)斜置 
  4.  
  5.     UIDeviceOrientationPortrait,                // 設備(屏幕)直立 
  6.  
  7.     UIDeviceOrientationPortraitUpsideDown,      // 設備(屏幕)直立,上下顛倒 
  8.  
  9.     UIDeviceOrientationLandscapeLeft,           // 設備(屏幕)向左橫置 
  10.  
  11.     UIDeviceOrientationLandscapeRight,          // 設備(屏幕)向右橫置 
  12.  
  13.     UIDeviceOrientationFaceUp,                  // 設備(屏幕)朝上平躺 
  14.  
  15.     UIDeviceOrientationFaceDown                 // 設備(屏幕)朝下平躺 
  16.  
  17. };  

說明:UIDeviceOrientation參考home鍵方向,如:home方向在右,設備(屏幕)方向向左(UIDeviceOrientationLandscapeLeft)

2)讀取設備方向

UIDevice單例代表當前的設備。從這個單例中可以獲得的信息設備,如設備方向orientation。

  1. UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation; 

3)監聽、處理和移除 設備方向改變的通知

當設備方向變化時候,發出UIDeviceOrientationDidChangeNotification通知;注冊監聽該通知,可以針對不同的設備方向處理視圖展示。

  1. //開啟和監聽 設備旋轉的通知(不開啟的話,設備方向一直是UIInterfaceOrientationUnknown) 
  2.  
  3. if (![UIDevice currentDevice].generatesDeviceOrientationNotifications) { 
  4.  
  5.     [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
  6.  
  7.  
  8. [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(handleDeviceOrientationChange:) 
  9.  
  10.                                      name:UIDeviceOrientationDidChangeNotification object:nil]; 
  11.  
  12.   
  13.  
  14.   
  15.  
  16. //設備方向改變的處理 
  17.  
  18. - (void)handleDeviceOrientationChange:(NSNotification *)notification{ 
  19.  
  20.   
  21.  
  22.     UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation; 
  23.  
  24.     switch (ddeviceOrientation) { 
  25.  
  26.         case UIDeviceOrientationFaceUp: 
  27.  
  28.             NSLog(@"屏幕朝上平躺"); 
  29.  
  30.             break; 
  31.  
  32.   
  33.  
  34.         case UIDeviceOrientationFaceDown: 
  35.  
  36.             NSLog(@"屏幕朝下平躺"); 
  37.  
  38.             break; 
  39.  
  40.   
  41.  
  42.         case UIDeviceOrientationUnknown: 
  43.  
  44.             NSLog(@"未知方向"); 
  45.  
  46.             break; 
  47.  
  48.   
  49.  
  50.         case UIDeviceOrientationLandscapeLeft: 
  51.  
  52.             NSLog(@"屏幕向左橫置"); 
  53.  
  54.             break; 
  55.  
  56.   
  57.  
  58.         case UIDeviceOrientationLandscapeRight: 
  59.  
  60.             NSLog(@"屏幕向右橫置"); 
  61.  
  62.             break; 
  63.  
  64.   
  65.  
  66.         case UIDeviceOrientationPortrait: 
  67.  
  68.             NSLog(@"屏幕直立"); 
  69.  
  70.             break; 
  71.  
  72.   
  73.  
  74.         case UIDeviceOrientationPortraitUpsideDown: 
  75.  
  76.             NSLog(@"屏幕直立,上下顛倒"); 
  77.  
  78.             break; 
  79.  
  80.   
  81.  
  82.         default
  83.  
  84.             NSLog(@"無法辨識"); 
  85.  
  86.             break; 
  87.  
  88.     } 
  89.  
  90.  
  91.   
  92.  
  93. //最后在dealloc中移除通知 和結束設備旋轉的通知 
  94.  
  95. - (void)dealloc{ 
  96.  
  97.     //... 
  98.  
  99.     [[NSNotificationCenter defaultCenter]removeObserver:self]; 
  100.  
  101.     [[UIDevice currentDevice]endGeneratingDeviceOrientationNotifications]; 

說明:手機鎖定豎屏后,UIDeviceOrientationDidChangeNotification通知就失效了。

2、UIInterfaceOrientation:界面方向

界面方向是反應iOS中界面的方向,它和Home按鈕的方向是一致的。

1)iOS定義了以下五種界面方向

  1. typedef NS_ENUM(NSInteger, UIInterfaceOrientation) { 
  2.  
  3.     UIInterfaceOrientationUnknown            = UIDeviceOrientationUnknown,       //未知方向 
  4.  
  5.     UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,               //界面直立 
  6.  
  7.     UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,  //界面直立,上下顛倒 
  8.  
  9.     UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,   //界面朝左 
  10.  
  11.     UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft    //界面朝右 
  12.  
  13. } __TVOS_PROHIBITED;  

說明:從定義可知,界面方向和設別方向有對應關系,如界面的豎直方向就是 設備的豎直方向:UIInterfaceOrientationUnknown = UIDeviceOrientationUnknown

2)讀取界面方向

UIInterfaceOrientation和狀態欄有關,通過UIApplication的單例調用statusBarOrientation來獲取

  1. UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation]; 

3)監聽、處理和移除 界面方向改變的通知

當界面方向變化時候,先后發出UIApplicationWillChangeStatusBarOrientationNotification和UIApplicationDidChangeStatusBarOrientationNotification通知;注冊監聽這兩個通知,可以針對不同的界面方向處理視圖展示。

  1. //以監聽UIApplicationDidChangeStatusBarOrientationNotification通知為例 
  2.  
  3. [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(handleStatusBarOrientationChange:) 
  4.  
  5.                                      name:UIApplicationDidChangeStatusBarOrientationNotification object:nil]; 
  6.  
  7.   
  8.  
  9.   
  10.  
  11. //界面方向改變的處理 
  12.  
  13. - (void)handleStatusBarOrientationChange: (NSNotification *)notification{ 
  14.  
  15.   
  16.  
  17.     UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation]; 
  18.  
  19.     switch (interfaceOrientation) { 
  20.  
  21.   
  22.  
  23.         case UIInterfaceOrientationUnknown: 
  24.  
  25.             NSLog(@"未知方向"); 
  26.  
  27.             break; 
  28.  
  29.   
  30.  
  31.         case UIInterfaceOrientationPortrait: 
  32.  
  33.             NSLog(@"界面直立"); 
  34.  
  35.             break; 
  36.  
  37.   
  38.  
  39.         case UIInterfaceOrientationPortraitUpsideDown: 
  40.  
  41.             NSLog(@"界面直立,上下顛倒"); 
  42.  
  43.             break; 
  44.  
  45.   
  46.  
  47.         case UIInterfaceOrientationLandscapeLeft: 
  48.  
  49.             NSLog(@"界面朝左"); 
  50.  
  51.             break; 
  52.  
  53.   
  54.  
  55.         case UIInterfaceOrientationLandscapeRight: 
  56.  
  57.             NSLog(@"界面朝右"); 
  58.  
  59.             break; 
  60.  
  61.   
  62.  
  63.         default
  64.  
  65.             break; 
  66.  
  67.     } 
  68.  
  69.  
  70.   
  71.  
  72. //最后在dealloc中移除通知 
  73.  
  74. - (void)dealloc{ 
  75.  
  76.     //... 
  77.  
  78.     [[NSNotificationCenter defaultCenter]removeObserver:self]; 
  79.  
  80.     [[UIDevice currentDevice]endGeneratingDeviceOrientationNotifications]; 
  81.  
  82.  

說明:手機鎖定豎屏后,UIApplicationWillChangeStatusBarOrientationNotification和UIApplicationDidChangeStatusBarOrientationNotification通知也失效了。

3、UIInterfaceOrientationMask

UIInterfaceOrientationMask是為了集成多種UIInterfaceOrientation而定義的類型,和ViewController相關,一共有7種

1)iOS中的UIInterfaceOrientationMask定義

  1. typedef NS_OPTIONS(NSUInteger, UIInterfaceOrientationMask) { 
  2.  
  3.     UIInterfaceOrientationMaskPortrait = (1 << UIInterfaceOrientationPortrait), 
  4.  
  5.     UIInterfaceOrientationMaskLandscapeLeft = (1 << UIInterfaceOrientationLandscapeLeft), 
  6.  
  7.     UIInterfaceOrientationMaskLandscapeRight = (1 << UIInterfaceOrientationLandscapeRight), 
  8.  
  9.     UIInterfaceOrientationMaskPortraitUpsideDown = (1 << UIInterfaceOrientationPortraitUpsideDown), 
  10.  
  11.     UIInterfaceOrientationMaskLandscape = (UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight), 
  12.  
  13.     UIInterfaceOrientationMaskAll = (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown), 
  14.  
  15.     UIInterfaceOrientationMaskAllButUpsideDown = (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight), 
  16.  
  17. } __TVOS_PROHIBITED; 

2)UIInterfaceOrientationMask的使用

在ViewController可以重寫- (UIInterfaceOrientationMask)supportedInterfaceOrientations方法返回類型,來決定UIViewController可以支持哪些界面方向。

  1. //支持界面直立 
  2.  
  3. - (UIInterfaceOrientationMask)supportedInterfaceOrientations{ 
  4.  
  5.     return UIInterfaceOrientationMaskPortrait; 
  6.  
  7.  

總結:UIDeviceOrientation(設備方向)和UIInterfaceOrientation(屏幕方向)是兩個不同的概念。前者代表了設備的一種狀態,而后者是屏幕為了應對不同的設備狀態,做出的用戶界面上的響應。在iOS設備旋轉時,由UIKit接收到旋轉事件,然后通過AppDelegate通知當前程序的UIWindow對象,UIWindow對象通知它的rootViewController,如果該rootViewController支持旋轉后的屏幕方向,完成旋轉,否則不旋轉;彈出的ViewController也是如此處理。

二、視圖控制器中旋轉方向的設置

0、關于禁止橫屏的操作(不建議)

比較常規的方法有兩種。

方法1:在項目的General–>Deployment Info–>Device Orientation中,只勾選Portrait(豎屏)

 

勾選Portrait.png

方法2:Device Orientation默認設置,在Appdelegate中實現supportedInterfaceOrientationsForWindow:只返回UIInterfaceOrientationMaskPortraitt(豎屏)

  1. -  (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window  {   
  2.  
  3.      return UIInterfaceOrientationMaskPortrait;   
  4.  
  5.  

說明:極少的APP中所有界面都是豎屏的,因為總會有界面需要支持橫屏,如視頻播放頁。所以不建議設置禁止APP頁面橫屏。

下面介紹如何讓項目中的 視圖控制器中旋轉方向的設置

1、APP支持多個方向

 

APP支持多個方向.png

說明:如此,APP支持橫屏和豎屏了,但是具體視圖控制器支持的頁面方向還需要進一步處理。由于不支持豎屏顛倒(Upside Down),即使設備上下顛倒,通過API也不會獲得設備、屏幕上下顛倒方向的。

2、支持ViewController屏幕方向設置

1)關鍵函數

視圖控制器支持的界面方向主要由以下三個函數控制

  1. //是否自動旋轉,返回YES可以自動旋轉,返回NO禁止旋轉   
  2.  
  3. - (BOOL)shouldAutorotate NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED;   
  4.  
  5.   
  6.  
  7. //返回支持的方向   
  8.  
  9. - (UIInterfaceOrientationMask)supportedInterfaceOrientations NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED;   
  10.  
  11.   
  12.  
  13. //由模態推出的視圖控制器 優先支持的屏幕方向 
  14.  
  15. - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED;  

2) QSBaseViewController設置

  1. //QSBaseViewController.h 
  2.  
  3. @interface QSBaseController : UIViewController 
  4.  
  5.   
  6.  
  7. @end 
  8.  
  9.   
  10.  
  11. //QSBaseViewController.m 
  12.  
  13. @implementation QSBaseController 
  14.  
  15.   
  16.  
  17.   //#pragma mark - 控制屏幕旋轉方法 
  18.  
  19. //是否自動旋轉,返回YES可以自動旋轉,返回NO禁止旋轉 
  20.  
  21. - (BOOL)shouldAutorotate{ 
  22.  
  23.     return NO
  24.  
  25.  
  26.   
  27.  
  28. //返回支持的方向 
  29.  
  30. - (UIInterfaceOrientationMask)supportedInterfaceOrientations{ 
  31.  
  32.     return UIInterfaceOrientationMaskPortrait; 
  33.  
  34.  
  35.   
  36.  
  37. //由模態推出的視圖控制器 優先支持的屏幕方向 
  38.  
  39. - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{ 
  40.  
  41.     return UIInterfaceOrientationPortrait; 
  42.  
  43.  
  44. @end  

說明1:QSBaseViewController默認不支持旋轉,只支持 界面豎直方向,項目中的Controller都繼承自QSBaseViewController,可以通過重寫這三個方法來讓Controller支持除豎屏之外的方向或旋轉。

3) 在QSNavigationController設置

目標:通過QSNavigationController來push視圖控制器時,把支持屏幕旋轉的設置交給最新push進來([self.viewControllers lastObject])的viewController來設置。

  1. //QSNavigationController.h 
  2.  
  3. @interface QSNavigationController : UINavigationController 
  4.  
  5.   
  6.  
  7. @end 
  8.  
  9.   
  10.  
  11. //QSNavigationController.m 
  12.  
  13. @implementation QSNavigationController 
  14.  
  15.   
  16.  
  17. #pragma mark - 控制屏幕旋轉方法 
  18.  
  19. - (BOOL)shouldAutorotate{   
  20.  
  21.     return [[self.viewControllers lastObject]shouldAutorotate]; 
  22.  
  23.  
  24.   
  25.  
  26. - (UIInterfaceOrientationMask)supportedInterfaceOrientations{ 
  27.  
  28.     return [[self.viewControllers lastObject]supportedInterfaceOrientations]; 
  29.  
  30.  
  31.   
  32.  
  33. - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{ 
  34.  
  35.     return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation]; 
  36.  
  37.  
  38. @end  

4) 在QSTabBarController設置

目標:TabBarController通常作為整個程序的rootViewController,UITabBar上面顯示的每一個Tab都對應著一個ViewController;每點擊一個Tab,出現的ViewController(self.selectedViewController)對屏幕旋轉和支持方向的設置 交給其自身去控制。

  1. //QSTabBarController.h 
  2.  
  3. @interface QSTabBarController : UITabBarController 
  4.  
  5.   
  6.  
  7. @end 
  8.  
  9.   
  10.  
  11. //QSTabBarController.m 
  12.  
  13. @implementation QSTabBarController 
  14.  
  15.   
  16.  
  17. #pragma mark - 控制屏幕旋轉方法 
  18.  
  19. - (BOOL)shouldAutorotate{ 
  20.  
  21.     return [self.selectedViewController shouldAutorotate]; 
  22.  
  23.  
  24.   
  25.  
  26. - (UIInterfaceOrientationMask)supportedInterfaceOrientations{ 
  27.  
  28.     return [self.selectedViewController supportedInterfaceOrientations]; 
  29.  
  30.  
  31.   
  32.  
  33. - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{ 
  34.  
  35.     return [self.selectedViewController preferredInterfaceOrientationForPresentation]; 
  36.  
  37.  
  38. @end  

三、屏幕旋轉方向下的視圖處理

1、屏幕旋轉時,建議監聽UIApplicationDidChangeStatusBarOrientationNotification

原因1:supportedInterfaceOrientations方法中最終返回的是 多個界面方向。

原因2(最重要的原因):我們真正要處理的是頁面方向發生旋轉UI的變化。而在設備的物理方向發生旋轉的時候,如果此時當前控制器的頁面并沒有旋轉,我們這時改變UI布局,可能就發生問題了。

2、屏幕的寬高處理

1)在iOS 8之后,當屏幕旋轉的時候,[[UIScreen mainScreen] bounds]也發生了改變。如橫屏時候的屏幕寬度 其實是豎屏的時候屏幕的高度。

2)我們處理視圖布局時候,如果使用到屏幕的寬高,不要直接使用SCREEN_HEIGHT和SCREEN_WIDTH,而使用SCREEN_MIN和SCREEN_MAX

  1. #define SCREEN_HEIGHT CGRectGetHeight([[UIScreen mainScreen] bounds]) 
  2.  
  3. #define SCREEN_WIDTH  CGRectGetWidth([[UIScreen mainScreen] bounds]) 
  4.  
  5.   
  6.  
  7. #define SCREEN_MIN MIN(SCREEN_HEIGHT,SCREEN_WIDTH) 
  8.  
  9. #define SCREEN_MAX MAX(SCREEN_HEIGHT,SCREEN_WIDTH)  

說明:豎屏時候,寬是SCREEN_MIN,高是SCREEN_MAX;橫屏時候,寬是SCREEN_MAX,高是SCREEN_MIN。

3、屏幕旋轉下處理Demo

  1. //監聽UIApplicationDidChangeStatusBarOrientationNotification的處理 
  2.  
  3. - (void)handleStatusBarOrientationChange: (NSNotification *)notification{ 
  4.  
  5.   
  6.  
  7.     UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation]; 
  8.  
  9.     BOOL isLandscape = NO
  10.  
  11.     switch (interfaceOrientation) { 
  12.  
  13.   
  14.  
  15.         case UIInterfaceOrientationUnknown: 
  16.  
  17.             NSLog(@"未知方向"); 
  18.  
  19.             break; 
  20.  
  21.   
  22.  
  23.         case UIInterfaceOrientationPortrait: 
  24.  
  25.         case UIInterfaceOrientationPortraitUpsideDown: 
  26.  
  27.             isLandscape = NO
  28.  
  29.             break; 
  30.  
  31.   
  32.  
  33.         case UIInterfaceOrientationLandscapeLeft: 
  34.  
  35.         case UIInterfaceOrientationLandscapeRight: 
  36.  
  37.             isLandscape = YES; 
  38.  
  39.             break; 
  40.  
  41.   
  42.  
  43.         default
  44.  
  45.             break; 
  46.  
  47.     } 
  48.  
  49.     if (isLandscape) { 
  50.  
  51.         self.tableView.frame = CGRectMake(0, 0, SCREEN_MAX, SCREEN_MIN - 44); 
  52.  
  53.     }else
  54.  
  55.         self.tableView.frame = CGRectMake(0, 0, SCREEN_MIN, SCREEN_MAX - 64); 
  56.  
  57.     } 
  58.  
  59.   
  60.  
  61.     [self.tableView reloadData]; 
  62.  
  63.  

說明:當然也可以選擇使用Masonry這樣優秀的AutoLayout布局第三方庫來處理,storyBoard來布局次之。

4、屏幕旋轉下處理Demo效果圖

 

豎屏下效果.png

 

橫屏下效果.png

5、屏幕旋轉處理的建議

1)旋轉前后,view當前顯示的位置盡量不變

2)旋轉過程中,暫時界面操作的響應

3)視圖中有tableview的話,旋轉后,強制 [tableview reloadData],保證在方向變化以后,新的row能夠充滿全屏。

四、強制橫屏

APP中某些頁面,如視頻播放頁,一出現就要求橫屏。這些橫屏頁面或模態彈出、或push進來。

1、模態彈出ViewController情況下 強制橫屏的設置

  1. //QSShow3Controller.m 
  2.  
  3. - (BOOL)shouldAutorotate{ 
  4.  
  5.     return NO
  6.  
  7.  
  8.   
  9.  
  10. - (UIInterfaceOrientationMask)supportedInterfaceOrientations{ 
  11.  
  12.     return UIInterfaceOrientationMaskLandscapeRight; 
  13.  
  14.  
  15.   
  16.  
  17. - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{ 
  18.  
  19.     return UIInterfaceOrientationLandscapeRight; 
  20.  
  21.  
  22.   
  23.  
  24. //模態彈出 
  25.  
  26. QSShow3Controller *vc = [[QSShow3Controller alloc]init]; 
  27.  
  28. [self presentViewController:vc animated:YES completion:nil];  

說明:這種情況比較簡單處理。

2、push推入ViewController情況下 強制橫屏的設置

  1. //QSShow4Controller.m 
  2.  
  3. -(void)viewWillAppear:(BOOL)animated{ 
  4.  
  5.   
  6.  
  7.    [super viewWillAppear:animated]; 
  8.  
  9.    [self setInterfaceOrientation:UIInterfaceOrientationLandscapeRight]; 
  10.  
  11.  
  12.   
  13.  
  14. //強制轉屏(這個方法最好放在BaseVController中) 
  15.  
  16. - (void)setInterfaceOrientation:(UIInterfaceOrientation)orientation{ 
  17.  
  18.   
  19.  
  20.     if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) { 
  21.  
  22.         SEL selector  = NSSelectorFromString(@"setOrientation:"); 
  23.  
  24.         NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]]; 
  25.  
  26.         [invocation setSelector:selector]; 
  27.  
  28.         [invocation setTarget:[UIDevice currentDevice]]; 
  29.  
  30.         // 從2開始是因為前兩個參數已經被selector和target占用 
  31.  
  32.         [invocation setArgument:&orientation atIndex:2]; 
  33.  
  34.         [invocation invoke]; 
  35.  
  36.     } 
  37.  
  38.  
  39.   
  40.  
  41. //必須返回YES 
  42.  
  43. - (BOOL)shouldAutorotate{ 
  44.  
  45.     return YES; 
  46.  
  47.  
  48.   
  49.  
  50. - (UIInterfaceOrientationMask)supportedInterfaceOrientations{ 
  51.  
  52.     return UIInterfaceOrientationMaskLandscapeRight; 
  53.  
  54.  
  55.   
  56.  
  57. //Push推入 
  58.  
  59. QSShow4Controller *vc = [[QSShow4Controller alloc]init]; 
  60.  
  61. [self.navigationController pushViewController:vc animated:YES];  

說明:蘋果不允許直接調用setOrientation方法,否則有被拒的風險;使用NSInvocation對象給[UIDevice currentDevice]發消息,強制改變設備方向,使其頁面方向對應改變,這是蘋果允許的。

五、其他

1、 APP啟動時,手機橫屏下,首頁UI(該頁面只支持豎屏)出錯(add by 2017/6/20)

  1. //設置設置狀態欄豎屏 
  2.  
  3.   [[UIApplication sharedApplication]setStatusBarOrientation:UIInterfaceOrientationPortrait];  

以上詳細源碼參考:QSRotationScreenDemo

https://github.com/buaa0300/QSKitDemo/tree/master/QSRotationScreenDemo 

責任編輯:龐桂玉 來源: iOS大全
相關推薦

2013-08-21 11:15:54

iOS橫豎屏方案

2013-05-23 10:51:28

Android開發移動開發橫豎屏切換

2012-05-22 14:26:15

XNA 橫豎屏設置

2016-09-18 10:51:01

JavascriptHtml5移動應用

2011-07-29 10:21:03

iPad 橫豎屏 切換

2017-11-20 11:07:23

Selection代碼邏輯分支

2010-01-25 15:23:12

Android橫豎屏切

2023-11-02 09:42:21

iOS屏幕旋轉

2011-06-08 15:05:43

J2ME

2013-04-09 10:03:29

iOS6.0旋轉兼容

2012-12-24 08:54:47

iOSUnity3D

2013-07-29 05:04:19

Cocos2dx橫屏豎

2012-01-10 09:32:12

iOS 5.1設備四核處理器

2017-12-20 16:58:49

iOS離屏渲染屏幕渲染

2013-07-29 04:24:40

iOS開發學習ViewControl

2022-01-25 10:11:10

紅綠屏蘋果BUG

2017-11-16 15:21:06

代碼taste方法

2012-02-02 16:35:42

Silverlight低級別觸屏處理

2018-05-16 07:41:29

圖片代碼資源

2014-05-09 12:59:26

iOS移動互聯網
點贊
收藏

51CTO技術棧公眾號

国产精品免费一区二区三区| 一区二区欧美久久| 国产精品一线二线三线| 日本1级在线| 美美哒免费高清在线观看视频一区二区| 日韩中文在线中文网三级| 国产九九九视频| 欧美成人黑人| 一区二区三区在线视频观看58| 农村寡妇一区二区三区| 国产精品亚洲欧美在线播放| 亚洲精品乱码| 久久视频这里只有精品| 97人妻天天摸天天爽天天| 亚瑟国产精品| 欧美特黄级在线| 欧美性猛交内射兽交老熟妇| 国产福利在线视频| zzijzzij亚洲日本少妇熟睡| 成人黄色影片在线| 看片网址国产福利av中文字幕| 欧美jizz| 亚洲天堂成人在线视频| 国产一精品一aⅴ一免费| 日本中文字幕一区二区| 午夜精品一区二区三区免费视频 | 精品人妻一区二区三区含羞草 | 色哟哟中文字幕| 麻豆国产精品一区二区三区| 97在线日本国产| 9999热视频| 成人嘿咻视频免费看| 亚洲国产免费av| 91精品999| 影音成人av| 在线看一区二区| 波多野结衣家庭教师视频| 高h视频在线播放| 综合精品久久久| 神马欧美一区二区| 精品电影在线| 久久综合久久综合亚洲| 国内成+人亚洲| 亚洲av综合色区无码一二三区| 久久99久久99小草精品免视看| 国产福利视频一区二区| 亚洲免费黄色网址| 久久国产精品久久久久久电车| 国内精品久久久久久| 国产在线观看99| 欧美久久久久| 欧美精品一区在线播放| 成年人二级毛片| 综合av在线| 久久中文字幕在线| www.av视频| 午夜日韩在线| 久久久久久久久久av| 久操免费在线视频| 亚洲福利免费| 欧洲精品久久久| 久久永久免费视频| 日韩av成人高清| 国产在线精品自拍| av 一区二区三区| 国产精品12区| 不卡的av一区| 免费看av毛片| 久久久国产综合精品女国产盗摄| 欧美xxxx黑人又粗又长精品| 黄色在线网站| 国产精品久久久久久久久免费樱桃| 亚洲精品高清国产一线久久| 黄色的网站在线观看| 亚洲资源中文字幕| 日韩小视频在线播放| 三级成人黄色影院| 免费h视频在线观看| 久久99久久99小草精品免视看| 亚洲在线一区二区| 日本美女一级片| 久久久久88色偷偷免费| 亚洲日本欧美在线| 青春草视频在线| 欧美日韩性生活视频| 特级丰满少妇一级| 亚洲三级av| 亚洲欧美www| 小泽玛利亚一区二区免费| 欧美片第1页综合| 欧美孕妇与黑人孕交| 国产一级精品毛片| 国产一区二区免费在线| 黄色91av| 日本在线视频站| 亚洲二区视频在线| 国产一级特黄a大片免费| 欧美一区一区| 亚洲性视频网址| 欧美人妻精品一区二区三区| 免费在线亚洲欧美| 成人福利网站在线观看11| 日本xxxxwww| 国产精品久久久久久久久图文区| 青青青在线视频播放| 成人在线免费av| 亚洲黄色www网站| 在线视频这里只有精品| 国产精品日韩欧美一区| 亚洲综合中文字幕在线| 久久久久久久久亚洲精品| 亚洲激情综合网| 免费黄色一级网站| 久久1电影院| 久久精品国产一区二区电影| 青青青国产在线| 国产精品一区二区91| 日韩成人在线资源| 丁香花高清在线观看完整版| 欧美日韩国产高清一区二区| 亚洲国产精品自拍视频| 中文字幕一区二区三区在线视频| 国产精品久久久久久超碰| 日本韩国在线观看| 一个色综合av| xxxx在线免费观看| 精品久久91| 全球成人中文在线| 欧美一区二区三区成人片在线| 中文字幕视频一区二区三区久| aaa毛片在线观看| 国产精品久久久久久久久久白浆 | 国产乱码精品| 99久久伊人精品影院| 国产日产一区二区| 欧美电影在线免费观看| 99久久99久久精品免费| 三级不卡在线观看| 欧美亚洲精品日韩| 成人免费网站视频| 亚洲精品日韩在线| 国产成人一级片| 久久亚洲一级片| 人妻熟女一二三区夜夜爱| 影视先锋久久| 国产精国产精品| 成人在线视频成人| 欧美三级电影在线看| 欧美极品jizzhd欧美18| 美女视频一区在线观看| 亚洲资源在线网| 高清一区二区中文字幕| 久久久av网站| 性欧美videos另类hd| 一区二区理论电影在线观看| 国产精品偷伦视频免费观看了| 欧美日本一区二区高清播放视频| 99国精产品一二二线| 日本高清在线观看| 亚洲爱爱爱爱爱| 可以免费在线观看的av| 26uuu色噜噜精品一区二区| 欧美私人情侣网站| 日韩在线第七页| 91精品在线观| 青青草原国产在线| 精品亚洲国产视频| 伊人久久国产精品| 亚洲女爱视频在线| 天天躁日日躁狠狠躁av麻豆男男 | 男女爽爽爽视频| 97人人精品| 丁香五月网久久综合| 激情国产在线| 精品一区二区三区三区| 这里只有精品免费视频| 日韩毛片视频在线看| 古装做爰无遮挡三级聊斋艳谭| 国内综合精品午夜久久资源| 狠狠色综合网站久久久久久久| 欧美亚洲韩国| 精品久久久999| 日本精品久久久久久| 欧洲亚洲国产日韩| 欧美黄色免费观看| 91色九色蝌蚪| 成人高清在线观看视频| 亚洲美女黄网| 无遮挡亚洲一区| 136国产福利精品导航网址应用| 91精品国产99| 麻豆网站视频在线观看| 亚洲国产精品久久久久| 国产精品欧美综合| 亚洲国产中文字幕| 欧美a在线播放| 成人97人人超碰人人99| 99视频在线视频| 黄色成人91| 亚洲乱码国产乱码精品天美传媒| 成人三级av在线| 国产精品视频在线观看| 国产精品一区hongkong| 日韩亚洲欧美中文在线| 天天干天天干天天干| 欧美美女bb生活片| 国产区一区二区三| 亚洲影视在线播放| 91视频免费看片| 91丨九色丨国产丨porny| 午夜福利123| 男人操女人的视频在线观看欧美| 国产3p露脸普通话对白| 欧美aa国产视频| 一区二区三区视频| 国产成人一区| 精品国产免费一区二区三区| 国产精品欧美一区二区三区不卡 | 果冻天美麻豆一区二区国产| 成人妇女免费播放久久久| 中文字幕成在线观看| 久久久女女女女999久久| 国产一二区在线观看| 中文字幕亚洲色图| 国产一二三在线观看| 亚洲精品国产品国语在线| www.日韩在线观看| 6080日韩午夜伦伦午夜伦| 中文字幕 国产精品| 日韩欧美在线一区| 国产69精品久久久久久久久久| 亚洲午夜精品17c| 真实国产乱子伦对白在线| 亚洲少妇30p| 午夜国产小视频| 亚洲欧洲日本在线| 黄色激情小视频| 国产精品乱码一区二区三区软件 | 国产在线一区二区三区| 韩日精品一区| 国产精品高潮呻吟视频| 在线日本欧美| 国产精品极品美女在线观看免费| 大胆人体一区| 国产成人精品视频在线观看| 久久爱91午夜羞羞| 国产精品www| 国产福利亚洲| 国产精品热视频| 亚洲伊人精品酒店| 91人人爽人人爽人人精88v| 玖玖玖视频精品| 高清视频一区二区三区| 99热这里只有精品首页 | japanese国产精品| 色就是色欧美| 日本黄色特级片| 激情综合色综合久久综合| 国产永久免费网站| 国产盗摄女厕一区二区三区| 337p日本欧洲亚洲大胆张筱雨 | 亚洲综合在线中文字幕| 日韩精品一区二区三区中文| 国产不卡一区二区在线观看| 久久国产精品免费精品3p| 久久精品女人的天堂av| 精品久久电影| 永久免费看av| 在线成人黄色| 亚欧在线免费观看| 国产精品99久久久久久似苏梦涵| 91人人澡人人爽| 久久综合九色综合97_久久久| 中文字幕免费视频| 中文字幕日韩欧美一区二区三区| 永久免费看黄网站| 欧美午夜精品伦理| 一区二区三区精彩视频| 欧美大片日本大片免费观看| 无码国产精品96久久久久| 亚洲午夜性刺激影院| 18av在线播放| 91爱爱小视频k| 日本成人在线网站| 国产美女精品久久久| 九九热线有精品视频99| 四虎影院一区二区| 最新日韩在线| 不卡的av中文字幕| proumb性欧美在线观看| 影音先锋男人在线| 亚洲午夜免费福利视频| 超碰在线观看91| 日韩精品一区二区三区视频播放 | 国产特级黄色大片| 久热成人在线视频| 中国一级特黄录像播放| 国产精品久久久久7777按摩 | 亚洲精品美女91| 国产美女18xxxx免费视频| 成人av网站大全| 一级性生活免费视频| 韩曰欧美视频免费观看| 国产精品久久久久久免费免熟| 国产视频在线观看一区二区| 高h视频在线观看| 国产不卡精品视男人的天堂| 91精品国产自产精品男人的天堂 | 性伦欧美刺激片在线观看| 捷克做爰xxxⅹ性视频| 国产亚洲欧美一区在线观看| 清纯粉嫩极品夜夜嗨av| 欧美日韩国产大片| 国产中文字幕在线视频| 一本久久综合亚洲鲁鲁五月天| 国产精品videossex国产高清 | 国产+人+亚洲| 亚洲高清影院| 日本亚洲导航| 国产欧美大片| 日韩精品人妻中文字幕有码| 亚洲欧美在线另类| 毛片在线免费播放| 亚洲欧美成人网| av成人 com a| 国产精品日韩一区二区免费视频 | 久久久国产精品x99av| 欧美电影免费观看网站| 国产一区二区三区高清| 亚洲一区二区| 日韩欧美亚洲另类| 日本一区二区综合亚洲| 久久99精品波多结衣一区| 亚洲国产精品网站| 操喷在线视频| 国产成人女人毛片视频在线| 婷婷激情图片久久| 亚洲欧美视频二区| 国产精品亲子伦对白| 小泽玛利亚一区二区三区视频| 精品亚洲永久免费精品 | 欧美午夜精品| 国产伦精品一区二区三区妓女下载| 一色屋精品亚洲香蕉网站| 最近中文在线观看| 综合国产在线视频| 四虎国产精品免费久久| 伊人久久青草| 国产美女娇喘av呻吟久久| 欧美爱爱免费视频| 日韩欧美国产一区在线观看| 日本h片在线| 精品国产乱码久久久久| 国产欧美91| 微拍福利一区二区| 欧美视频一区二区三区| 婷婷视频在线| 91久久伊人青青碰碰婷婷| 午夜天堂精品久久久久| 老司机午夜免费福利| 欧美性xxxx极品hd满灌| 韩国中文字幕2020精品| 国产美女高潮久久白浆| 欧美影院一区| 天堂www中文在线资源| 色综合久久久久久久| 国产剧情在线观看| 91久久久久久久久久久久久| 午夜精品亚洲| 国内精品久久99人妻无码| 欧美性生交片4| 中文在线免费| 好吊妞www.84com只有这里才有精品| 久久av最新网址| 欧美xxxooo| 亚洲爱爱爱爱爱| 欧美色片在线观看| 男女h黄动漫啪啪无遮挡软件| 成人的网站免费观看| 不卡av电影在线| 久久成人人人人精品欧| 蜜桃久久久久| 亚州精品一二三区| 亚洲综合色噜噜狠狠| 免费国产在线观看| 91夜夜揉人人捏人人添红杏| 日韩一级精品| 五月天免费网站| 亚洲精品99999| 亚洲色图综合| 黄色一级在线视频| 自拍偷自拍亚洲精品播放| 日日躁夜夜躁白天躁晚上躁91| 国产精品高潮视频| 韩日精品视频| 久久国产高清视频| 亚洲欧洲日产国产网站| 日韩最新av| 视色视频在线观看| 婷婷一区二区三区|