如何獲得iPhone的當前方向? 我衝浪了這個網站,發現了以下兩種方法。關於iPhone的定位
- [UIApplication sharedApplication] .statusBarOrientation;
- [[UIDevice currentDevice] orientation];
哪一個是獲得當前方向的正確方法? 我在模擬器4.1下試過兩種方法,但這兩種方法都存在一些問題。
如何獲得iPhone的當前方向? 我衝浪了這個網站,發現了以下兩種方法。關於iPhone的定位
哪一個是獲得當前方向的正確方法? 我在模擬器4.1下試過兩種方法,但這兩種方法都存在一些問題。
[[UIDevice currentDevice] orientation]
獲取設備的當前物理方向。 [UIApplication sharedApplication].statusBarOrientation
獲取UI的方向。如果該應用程序曾向shouldAutorotateToInterfaceOrientation:
方法返回NO,則這兩個值不會相同。
感謝您對我一個明確的關於這兩種方法的圖片。 – AechoLiu 2010-10-01 02:50:16
需要注意的事項:如果您的設備位於平面上,則[[UIDevice currentDevice]方向]可能不會返回您想要的值。我有一個基於用戶輸入動態佈局的界面,當我使用它的時候,我覺得很奇怪。使用'statusBarOrientation'似乎工作得很好。 – 2010-11-10 21:39:45
註冊您的課程以收聽UIDeviceOrientationDidChangeNotification,然後相應地處理設備方向。
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(deviceRotated:)
name:UIDeviceOrientationDidChangeNotification
object:[UIDevice currentDevice]];
,妥善處理設備的方向:
- (void)deviceRotated: (id) sender{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation == UIDeviceOrientationFaceUp ||
orientation == UIDeviceOrientationFaceDown)
{
//Device rotated up/down
}
if (orientation == UIDeviceOrientationPortraitUpsideDown)
{
}
else if (orientation == UIDeviceOrientationLandscapeLeft)
{
}
else if (orientation == UIDeviceOrientationLandscapeRight)
{
}
}
謝謝你的幫助。我投了因爲一個問題的答案。該方法運作良好,並感謝你。 – AechoLiu 2010-10-01 02:51:48
參見[iPhone方向(http://stackoverflow.com/q/634745/194544)線程 – beryllium 2012-02-20 15:39:19