ios 设备方向判断

UIDeviceOrientation      是机器硬件的当前旋转方向   这个你只能取值 不能设置

UIInterfaceOrientation   是你程序界面的当前旋转方向   这个可以设置

 

判断设备现在的方向:

C代码  收藏代码
  1. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  
  2. {  
  3.     //宣告一個UIDevice指標,並取得目前Device的狀況  
  4.     UIDevice *device = [UIDevice currentDevice] ;   
  5.       
  6.     //取得當前Device的方向,來當作判斷敘述。(Device的方向型態為Integer)  
  7.     switch (device.orientation) {  
  8.         case UIDeviceOrientationFaceUp:  
  9.         NSLog(@"螢幕朝上平躺");  
  10.             break;  
  11.               
  12.         case UIDeviceOrientationFaceDown:  
  13.         NSLog(@"螢幕朝下平躺");  
  14.             break;  
  15.               
  16.         //系統無法判斷目前Device的方向,有可能是斜置   
  17.         case UIDeviceOrientationUnknown:  
  18.         NSLog(@"未知方向");  
  19.             break;  
  20.               
  21.         case UIDeviceOrientationLandscapeLeft:  
  22.         NSLog(@"螢幕向左橫置");  
  23.             break;  
  24.               
  25.         case UIDeviceOrientationLandscapeRight:  
  26.         NSLog(@"螢幕向右橫置");  
  27.             break;  
  28.               
  29.         case UIDeviceOrientationPortrait:  
  30.         NSLog(@"螢幕直立");  
  31.             break;  
  32.               
  33.         case UIDeviceOrientationPortraitUpsideDown:  
  34.         NSLog(@"螢幕直立,上下顛倒");  
  35.             break;  
  36.               
  37.         default:  
  38.         NSLog(@"無法辨識");  
  39.             break;  
  40.     }  
  41.   
  42.     // Return YES for supported orientations  
  43.     return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); // 只支持向左横向, YES 表示支持所有方向  
  44. }  

 

或者

C代码  收藏代码
  1. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  
  2. {  
  3.     UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;  
  4.     if (UIDeviceOrientationIsLandscape(deviceOrientation)) NSLog(@"横向");      
  5.     else if(UIDeviceOrientationIsPortrait(deviceOrientation)) NSLog(@"纵向");  
  6.       
  7.     // // Return YES for supported orientations  
  8.     return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); // 只支持向左横向, YES 表示支持所有方向  
  9. }  

 

Portrait 表示 纵向,Landscape 表示 横向。

 

C代码  收藏代码
  1. typedef enum {  
  2.     UIDeviceOrientationUnknown,  
  3.     UIDeviceOrientationPortrait,            // Device oriented vertically, home button on the bottom  
  4.     UIDeviceOrientationPortraitUpsideDown,  // Device oriented vertically, home button on the top  
  5.     UIDeviceOrientationLandscapeLeft,       // Device oriented horizontally, home button on the right  
  6.     UIDeviceOrientationLandscapeRight,      // Device oriented horizontally, home button on the left  
  7.     UIDeviceOrientationFaceUp,              // Device oriented flat, face up  
  8.     UIDeviceOrientationFaceDown             // Device oriented flat, face down  
  9. } UIDeviceOrientation;  

 

C代码  收藏代码
  1. typedef enum {  
  2.     UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,  
  3.     UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,  
  4.     UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,  
  5.     UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft  
  6. } UIInterfaceOrientation;  

  

C代码  收藏代码
  1. #define UIDeviceOrientationIsPortrait(orientation)  ((orientation) == UIDeviceOrientationPortrait || (orientation) == UIDeviceOrientationPortraitUpsideDown)  
  2. #define UIDeviceOrientationIsLandscape(orientation) ((orientation) == UIDeviceOrientationLandscapeLeft || (orientation) == UIDeviceOrientationLandscapeRight)  

 

上面是重要的源代码,已经解释的非常清楚。UIDeviceOrientationIsPortrait(orientation) 跟  ((orientation) == UIDeviceOrientationPortrait || (orientation) == UIDeviceOrientationPortraitUpsideDown) 完全是一个意思。

 

 

posted @ 2012-07-04 10:49  松花江以南  阅读(8901)  评论(1编辑  收藏  举报