1

我不确定这是一个错误还是我可能做错了什么,但是当我以纵向模式启动我的应用程序而不旋转设备并运行此代码时

if(UIInterfaceOrientationIsPortrait([[UIDevice currentDevice] orientation])) {
    NSLog(@"Portrait");
} else {
    NSLog(@"Landscape");
}

我返回Landscape,在我旋转设备并再次检查后它返回正确的值,所以当你第一次启动返回的方向时似乎是错误的。这是一个已知的问题?

编辑:

即使我在 AppDelegate 中运行此代码,它也会返回Landscape,即使我在纵向模式下启动

if(UIInterfaceOrientationIsPortrait([[UIDevice currentDevice] orientation])) {
    NSLog(@"Portrait");
} else {
    NSLog(@"Landscape");
}
4

3 回答 3

3

那是因为在第一次启动时它返回 UIDeviceOrientationUnknown。它既不是肖像也不是风景。如果你想检测用户界面方向,你应该使用

UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (UIInterfaceOrientationIsLandscape(orientation)) {
    NSLog(@"landscape");
}else{
    NSLog(@"portrait");
}
于 2012-09-20T06:34:01.953 回答
0

在您的 Info.plist > Supported interface orientations 中,将项目“Portrait(底部主页按钮)”向上拖动到其他项目上。

于 2012-09-20T05:38:51.030 回答
-1

这是仅纵向模式的代码

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}
于 2012-09-20T05:47:28.023 回答