2012-05-23 64 views
0

我想知道設備的當前方向。當前設備不工作的UIInterfaceOrientation

if([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortrait) 
    { 

    } 

但這doent工作

+0

你或許應該比較'UIDeviceOrientationPortrait',因爲你是在看_device_方向而不是_interface_方向。話雖如此,看着文檔,你會看到'UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait'。所以這不會改變任何事情,只是使它更清晰。 –

+0

儘管文檔中說beginGeneratingDeviceOrientationNotifications必須被調用,但我發現[[UIDevice currentDevice]方向]返回非零值。不知道爲什麼。也許是因爲我在做startAccelerometerUpdatesToQueue:withHandler :(有人知道爲什麼嗎?) – Jeff

回答

1

我得到了它,

if (UIDeviceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)) { 

} 

這項工作非常完美。

2

您應該使設備方位像這樣的通知:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications] 

,那麼你可以查詢當前的方向

編輯:

來自do CS: 「這個屬性的值,除非取向通知已通過調用beginGeneratingDeviceOrientationNotifications啓用總是返回0」(其中0爲UIDeviceOrientationUnknown

+0

不需要開始生成通知,只需重寫' - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration'和/或' - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation'方法 – sonxurxo

0

[[UIDevice currentDevice] orientation] 

將返回一個

UIDeviceOrientationPortrait 
UIDeviceOrientationPortraitUpsideDown 
UIDeviceOrientationLandscapeLeft 
UIDeviceOrientationLandscapeRight 

常量。如果你只是想檢查其「垂直」或「水平」,無論上下或左右,只檢查:

if (UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation]) {...}

如果要檢測方向的變化,覆蓋

-(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {} 

-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {...} 

方法。

這對你有幫助嗎?

+0

它也可以返回'UIDeviceOrientationUnknown','UIDeviceOrientationFaceUp'和'UIDeviceOrientationFaceDown' –

+0

但你仍然需要啓用通知才能正常工作...... – giorashc

+0

@DavidRönnqvist不知道,謝謝!我從來沒有需要啓用通知來獲取這些方法調用(實際上,我正在測試它) – sonxurxo

0

接受的答案中提到的解決方案適用於我。

雖然我的語句1沒有得到與下面的邏輯

myOrientation = [[UIApplication sharedApplication] statusBarOrientation]; 
if(myOrientation == UIInterfaceOrientationPortrait) || 
    (myOrientation == UIInterfaceOrientationPortraitUpsideDown) 
{ 
    // stmt 1; 
} 
執行

這一個對我的作品的權利

if (UIDeviceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)) 
{ 
    // stmt 1; 
}