UIInterfaceOrientation当前设备无法正常工作

时间:2012-05-23 07:24:31

标签: iphone ios orientation

我想知道我的设备的当前方向。

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

    }

但是这种做法

4 个答案:

答案 0 :(得分:2)

您应该启用设备方向的通知,如下所示:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]

然后您可以查询当前方向

编辑:

来自文档:“此属性的值始终返回0,除非通过调用beginGeneratingDeviceOrientationNotifications启用了方向通知”(其中0为UIDeviceOrientationUnknown

答案 1 :(得分:1)

我明白了,

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

}

这项工作非常完美。

答案 2 :(得分:0)

[[UIDevice currentDevice] orientation]

将返回

之一
UIDeviceOrientationPortrait
UIDeviceOrientationPortraitUpsideDown
UIDeviceOrientationLandscapeLeft
UIDeviceOrientationLandscapeRight

常数。如果你只想检查它是“垂直”还是“水平”,无论是倒置还是左右,只需检查:

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

如果要检测方向更改,请覆盖

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

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

方法

这对你有帮助吗?

答案 3 :(得分:0)

接受的答案中提到的解决方案对我有用。

虽然我的stmt 1没有使用以下逻辑执行

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

这个对我有用

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