0

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

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

    }

但这不起作用

4

4 回答 4

2

您应该像这样启用设备方向的通知:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]

然后可以查询当前方向

编辑 :

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

于 2012-05-23T07:35:35.917 回答
1

我得到了它,

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

}

这工作完美。

于 2012-05-24T13:04:09.957 回答
0

[[UIDevice currentDevice] orientation]

将返回其中之一

UIDeviceOrientationPortrait
UIDeviceOrientationPortraitUpsideDown
UIDeviceOrientationLandscapeLeft
UIDeviceOrientationLandscapeRight

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

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

如果要检测方向变化,请覆盖

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

或者

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

方法。

这对你有帮助吗?

于 2012-05-23T07:38:46.023 回答
0

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

虽然我的 stmt 1 没有按照以下逻辑执行

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

这个对我有用

if (UIDeviceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation )) 
{
    // stmt 1;
}
于 2014-01-28T10:08:06.320 回答