天天看點

裝置旋轉UIDeviceOrientation 和 UIInterfaceOrientation

UIDeviceOrientation 是機器硬體的目前旋轉方向 這個你隻能取值 不能設定

UIInterfaceOrientation 是你程式界面的目前旋轉方向 這個可以設定

1.UIDeviceOrientation 和 UIInterfaceOrientation的定義

1.UIInterfaceOrientation枚舉值

Portrait 表示 縱向,Landscape 表示 橫向。

typedef enum {  
        UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,  
        UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,  
        UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,  
        UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft  
    } UIInterfaceOrientation;  
           

2.UIDeviceOrientation枚舉值

typedef enum {  
        UIDeviceOrientationUnknown,  
        UIDeviceOrientationPortrait,            // Device oriented vertically, home button on the bottom  
        UIDeviceOrientationPortraitUpsideDown,  // Device oriented vertically, home button on the top  
        UIDeviceOrientationLandscapeLeft,       // Device oriented horizontally, home button on the right  
        UIDeviceOrientationLandscapeRight,      // Device oriented horizontally, home button on the left  
        UIDeviceOrientationFaceUp,              // Device oriented flat, face up  
        UIDeviceOrientationFaceDown             // Device oriented flat, face down  
    } UIDeviceOrientation;  
           

2.判斷裝置現在的方向:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  
    {  
        //宣告一個UIDevice指標,並取得目前Device的狀況  
        UIDevice *device = [UIDevice currentDevice] ;   

        //取得當前Device的方向,來當作判斷敘述。(Device的方向型態為Integer)  
        switch (device.orientation) {  
            case UIDeviceOrientationFaceUp:  
            NSLog(@"螢幕朝上平躺");  
                break;  

            case UIDeviceOrientationFaceDown:  
            NSLog(@"螢幕朝下平躺");  
                break;  

            //系統無法判斷目前Device的方向,有可能是斜置   
            case UIDeviceOrientationUnknown:  
            NSLog(@"未知方向");  
                break;  

            case UIDeviceOrientationLandscapeLeft:  
            NSLog(@"螢幕向左橫置");  
                break;  

            case UIDeviceOrientationLandscapeRight:  
            NSLog(@"螢幕向右橫置");  
                break;  

            case UIDeviceOrientationPortrait:  
            NSLog(@"螢幕直立");  
                break;  

            case UIDeviceOrientationPortraitUpsideDown:  
            NSLog(@"螢幕直立,上下顛倒");  
                break;  

            default:  
            NSLog(@"無法辨識");  
                break;  
        }  

        // Return YES for supported orientations  
        return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); // 隻支援向左橫向, YES 表示支援所有方向  
    }  
           

或者

#define UIDeviceOrientationIsPortrait(orientation)  ((orientation) == UIDeviceOrientationPortrait || (orientation) == UIDeviceOrientationPortraitUpsideDown)  
    #define UIDeviceOrientationIsLandscape(orientation) ((orientation) == UIDeviceOrientationLandscapeLeft || (orientation) == UIDeviceOrientationLandscapeRight)  
           
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  
    {  
        UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;  
        if (UIDeviceOrientationIsLandscape(deviceOrientation)) NSLog(@"橫向");      
        else if(UIDeviceOrientationIsPortrait(deviceOrientation)) NSLog(@"縱向");  

        // // Return YES for supported orientations  
        return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); // 隻支援向左橫向, YES 表示支援所有方向  
    }  
           

轉載自http://justcoding.iteye.com/blog/1472932