2010-10-10 32 views
10

當扁平我有以下代碼:iPad的推出方向上表面

-(void)viewWillAppear:(BOOL)animated { 

    UIDeviceOrientation orientation = [[UIDevice currentDevice] UIInterface]; 

    if(orientation==UIDeviceOrientationLandscapeLeft || orientation==UIDeviceOrientationLandscapeRight) { 
     NSLog(@"Device Landscape"); 
    } else { 
     NSLog(@"Device Portrait"); 
    } 

} 

這工作完全爲模擬器和在設備上,但只有當iPad是在表面上不平坦的,例如,如果我躺在桌子上的iPad並加載視圖時會顯示其肖像,因此當視圖出現時我無法檢測到方向。

當viewWillAppear被調用時檢測界面方向的最佳方法的任何想法?

感謝

+0

好代碼,你希望你的應用程序做的,如果iPad是事實上朝上? – 2010-10-10 17:56:45

+0

當設備放平時,他想知道是否顯示橫向或縱向視圖。 – Emil 2010-10-10 18:21:10

+0

我有一個子視圖,這是顯示在不同的地方,如果視圖是風景/肖像。所以我需要知道viewAppears時界面的方向。 – Steve 2010-10-10 19:04:07

回答

26

您應該使用[self interfaceOrientation],而不是設備的方向。

0

首先,你知道UIViewController的interfaceOrientation屬性嗎?它看起來像你試圖複製它。如果你真的想這樣做,只需訂閱設備方向更改通知,檢查新的方向是否是有效的接口方向(該宏是一個宏),如果是,則將該值存儲到某個變量(如lastSeenOrientation)。那麼你可以依賴於任何你想要的價值。

8

[[UIApplication sharedApplication] statusBarOrientation]也適用,如果你在某處不訪問[self interfaceOrientation]

+0

+1,真的很好用,謝謝! – 2011-09-24 13:37:55