精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲在线第一页| 欧美精品一区二| 亚洲国产欧美日韩| 国产欧美日韩成人| 最新亚洲一区| 中文字幕亚洲国产| 野花视频免费在线观看| 英国三级经典在线观看| 国产精品色婷婷| 成人高清在线观看| а中文在线天堂| 欧美一区高清| 亚洲欧美日韩国产中文| 日本一本在线视频| 日韩精品影片| 亚洲成a天堂v人片| 美国av在线播放| 亚欧在线观看视频| 免费在线看一区| 国内精品久久久久影院 日本资源| 国产精品美女高潮无套 | 国产精品第一页在线| 国产精品白嫩白嫩大学美女| 成人情趣视频网站| 日韩精品电影网| 日韩大尺度视频| 日韩成人一区| 色婷婷亚洲一区二区三区| 日韩欧美精品在线| 欧美人与性禽动交精品| a级片在线免费看| 日韩高清不卡在线| 91高清视频免费观看| 破处女黄色一级片| 99久久婷婷| 国产一区二区三区免费视频| 亚洲精品国产成人av在线| 日韩免费大片| 亚洲成人福利片| 看全色黄大色大片| 91高清在线| 91麻豆免费视频| 国产91视觉| 国产一区二区在线播放视频| 亚洲制服少妇| 色在人av网站天堂精品| 制服丨自拍丨欧美丨动漫丨| 日韩大尺度在线观看| 制服丝袜亚洲色图| 欧美久久在线观看| 1234区中文字幕在线观看| 中文字幕一区二区三区四区不卡| 久久久久久久久久久一区| 国产suv精品一区二区69| 蜜桃精品在线观看| 国产成人激情视频| 成人毛片在线播放| 中文精品在线| 久久久亚洲影院| 欧美日韩激情在线观看| 亚洲国产成人精品女人| 在线观看国产精品91| 黄色性视频网站| **爰片久久毛片| 精品国产亚洲在线| 日韩女优在线视频| 中文在线综合| 精品裸体舞一区二区三区| 成人免费播放视频| 国产精品免费精品自在线观看| 久久激情五月激情| 欧美丰满嫩嫩电影| 日本 片 成人 在线| 精品九九久久| 欧美精品成人一区二区三区四区| 怡红院亚洲色图| 国产激情一区| 日韩亚洲欧美在线| 国产黑丝在线视频| 成人激情自拍| 日韩精品中文字幕有码专区| 国产伦精品一区二区三区妓女 | 天堂中文资源在线观看| av网站免费线看精品| 国产一区在线免费观看| 色资源在线观看| 久久久另类综合| 亚洲精品一区二区毛豆| 国内外激情在线| 亚洲国产婷婷综合在线精品| 久久99中文字幕| av剧情在线观看| 在线观看亚洲a| 99re6在线观看| 北条麻妃一区二区三区在线观看| 亚洲国产女人aaa毛片在线| 国产在线观看无码免费视频| 国产影视一区| 欧美成人一区在线| 久久久久久少妇| 久久成人羞羞网站| 国产精品二区在线观看| 色婷婷综合视频| 国产女同性恋一区二区| 美女在线免费视频| 日韩激情电影| 欧美日韩国产影片| 奇米777在线| 九九精品久久| 九色精品免费永久在线| 久久一区二区三区视频| 久久精品国产精品亚洲精品| 国产精品伊人日日| 亚洲欧美日本一区| 樱花草涩涩www在线播放| 欧美日韩午夜精品| 香港三日本8a三级少妇三级99| 国产成人调教视频在线观看 | 国产伦精品一区| 国产精品一区在线看| 亚洲人成网站影音先锋播放| 欧美亚洲另类色图| 国产精品一区二区精品视频观看| 亚洲国产成人91精品| 纪美影视在线观看电视版使用方法| 99久久亚洲精品蜜臀| 欧美与黑人午夜性猛交久久久| 国产麻豆免费视频| 久久久久久久久99精品| 今天免费高清在线观看国语| 日本高清不卡一区二区三区视频| 日韩欧美123| 人妻熟人中文字幕一区二区| 亚洲精品资源| 99re国产在线播放| 北岛玲一区二区三区| 欧美日韩国产黄| 中文字幕人妻无码系列第三区| 精品视频国产| 青青草精品毛片| 欧美一级片免费| 亚洲免费观看高清完整版在线| 九九热免费在线观看| 国产真实有声精品录音| 992tv成人免费影院| 国内精品国产成人国产三级| 日本一区二区三区久久久久久久久不 | 欧美日韩爱爱视频| 一起草av在线| 国产日韩av一区| 少妇高潮喷水久久久久久久久久| 91夜夜蜜桃臀一区二区三区| 久久91精品国产91久久跳| 国产精品视频一区二区三区,| 国产三级欧美三级| caopor在线视频| 久久久久99精品成人片试看| 在线播放一区| 精品一卡二卡三卡四卡日本乱码| 两个人看的在线视频www| 亚洲第一天堂av| 国产美女激情视频| 久久久久国色av免费看影院| 熟女性饥渴一区二区三区| 日本韩国欧美超级黄在线观看| 欧美精品videos| 午夜精品一二三区| 亚洲一区二区在线观看视频 | 日本福利视频网站| 2021年精品国产福利在线| 欧美激情视频免费观看| 亚洲精品久久久久久动漫器材一区| 亚洲老妇xxxxxx| 精品国产aⅴ一区二区三区东京热 久久久久99人妻一区二区三区 | 欧美日韩国产中字| 动漫精品一区二区三区| 日韩国产精品大片| 视频一区国产精品| 色综合一区二区日本韩国亚洲 | 毛片在线看网站| 91精品国产品国语在线不卡| 亚洲波多野结衣| 粉嫩嫩av羞羞动漫久久久| 国产综合中文字幕| 妖精视频一区二区三区| 国产精品欧美日韩久久| 成人三级黄色免费网站| 日韩精品中午字幕| 啦啦啦免费高清视频在线观看| 久久综合资源网| 日本xxxxxxx免费视频| 日韩毛片视频| 91嫩草免费看| 日本а中文在线天堂| 中文字幕精品www乱入免费视频| 影音先锋国产在线| 成人欧美一区二区三区白人| 中文字幕在线综合| 欧美国产偷国产精品三区| 91在线网站视频| 2021中文字幕在线| 亚洲全部视频| 国产色视频一区| 丝袜美腿av在线| 亚洲女人被黑人巨大进入| 97人妻精品一区二区三区软件 | 在线观看欧美激情| 亚洲一区二区三区四区电影| 欧美专区在线播放| 九七久久人人| 日韩精品亚洲视频| 国产美女www| 亚洲精品成人在线| 日韩人妻无码精品综合区| 国产一区二区在线电影| 美女av免费在线观看| 99精品美女| 欧美国产综合视频| 日韩一区免费| 国产精品福利小视频| 日本在线观看大片免费视频| 国产一区二区三区视频免费| 国产视频第二页| 欧美在线观看一二区| 九九热国产视频| 中文字幕日韩一区| 亚洲成人网在线播放| 国产suv精品一区二区6| 91av在线免费播放| 在线观看日韩av电影| 中文字幕欧美日韩一区二区三区| 日本国产精品| 高清国产在线一区| 日韩在线视频一区二区三区| 国产精品久久久久久中文字| 国产高清不卡| 国外成人在线直播| 日本高清在线观看视频| 日韩有码在线观看| av播放在线观看| 亚洲欧美一区二区视频| 秋霞毛片久久久久久久久| 日韩视频一区二区三区四区| 91精品国产自产在线| 天堂8中文在线最新版在线| 久久久久久久影院| 五月花成人网| 另类视频在线观看| 日韩成人影视| 这里精品视频免费| 青青青免费视频在线2| 亚洲跨种族黑人xxx| 婷婷五月综合激情| 亚洲精品乱码久久久久久金桔影视| www.av黄色| 日韩欧美久久一区| 亚洲国产视频一区二区三区| 91精品国产综合久久久久| 91资源在线视频| 91福利区一区二区三区| 一级黄色片免费| 欧美精品电影在线播放| 91中文字幕在线播放| 懂色一区二区三区免费观看| 欧美凹凸一区二区三区视频| 午夜先锋成人动漫在线| 九九九九九精品| 亚洲精品国产精品粉嫩| 久久艹中文字幕| av一区二区在线播放| 视频在线一区二区三区| 久久99视频| 亚洲草草视频| 亚洲在线久久| av日韩在线看| 国产精品免费看| 女性隐私黄www网站视频| 首页国产欧美久久| 亚洲污视频在线观看| 日韩精品电影在线| 黄色一级片免费播放| 国产成a人亚洲精| 国产精品九九视频| 久久精品无码一区二区三区| eeuss中文字幕| 亚洲精品成人悠悠色影视| 中文字幕第28页| 日韩欧美国产激情| 国产精品日韩无码| 欧美精品一区二区三区久久久| 色哟哟在线观看| 色偷偷av一区二区三区乱| 性直播体位视频在线观看| 97精品国产97久久久久久免费 | 波多野结衣家庭教师在线播放| 国产精品婷婷| 污污网站免费观看| 国产91在线观看| 在线免费播放av| 亚洲精品自拍动漫在线| 日韩 欧美 中文| 欧美日韩国产系列| 亚洲成a人片77777精品| 亚洲欧美一区二区三区在线| 国产一二区在线观看| 午夜精品免费视频| 亚洲精品伊人| 国产成人精品一区二区三区福利| blacked蜜桃精品一区| 日韩亚洲欧美中文高清在线| 奇米影视888狠狠狠777不卡| 啊v视频在线一区二区三区| 888av在线视频| 91精品国产自产在线老师啪| 亚洲婷婷丁香| 日韩精品一区二区在线视频| 首页综合国产亚洲丝袜| 免费看91视频| 国产精品久久久久婷婷二区次| 日本三级中文字幕| 欧美日韩国产综合一区二区| 国产成人无码www免费视频播放| 在线播放国产精品| а√天堂8资源中文在线| 国产精品亚洲精品| 秋霞综合在线视频| 日韩精品福利片午夜免费观看| 午夜宅男久久久| 中文字幕免费在线播放| 亚洲欧洲中文日韩久久av乱码| 91视频免费网址| 精品国产91久久久久久久妲己 | av资源站一区| 国产精品免费在线视频| 91极品美女在线| 婷婷五月综合激情| 欧美肥婆姓交大片| 亚洲精品tv| 色女人综合av| 另类av一区二区| 玖草视频在线观看| 午夜视频一区二区| 国产黄色av片| 久久人体大胆视频| 成人在线免费电影网站| 欧美午夜视频在线| 国产亚洲一级| 国产麻豆xxxvideo实拍| 香蕉成人啪国产精品视频综合网| 精品免费久久久| 久久成人免费视频| 亚洲精品成a人ⅴ香蕉片| 一区精品视频| 久久av资源网| 91麻豆制片厂| 欧美日韩一区在线| a视频网址在线观看| 国产精品高潮呻吟久久av黑人| 亚洲专区视频| 青青在线视频免费| 久久久久久久综合色一本| 欧美 日韩 精品| 亚洲性无码av在线| 新片速递亚洲合集欧美合集| 欧美一区二区三区在线播放 | 国产精品久久久久久妇女| 欧美一区免费视频| 国产在线观看91| 97在线视频免费观看| 女厕嘘嘘一区二区在线播放 | 亚洲国产精品久久久久蝴蝶传媒| 亚洲最大成人在线观看| 久久久99精品久久| 最近中文字幕在线免费观看| 中文字幕在线观看亚洲| 五月天色综合| 毛片av在线播放| av电影在线观看不卡| 日本黄色中文字幕| 在线色欧美三级视频| av在线国产精品| 免费在线看黄色片| 26uuu亚洲综合色欧美| 成人黄色三级视频| 欧美高清电影在线看| 欧美调教网站| 污污的视频免费| 亚洲综合精品自拍| 日本1级在线| 亚洲free性xxxx护士白浆| 在线日韩av| 色欲狠狠躁天天躁无码中文字幕 | 无码 制服 丝袜 国产 另类| 91丨porny丨首页| 黄色大全在线观看| 久久成人免费视频| 亚洲aaa级| 一个色综合久久| 欧美视频在线观看免费网址| 成人性生交大片免费看午夜 |