2

我希望在我的应用程序中有一个视图具有横向方向。我已经设法让视图在手动旋转时保持在横向,但是如果设备已经是纵向的,则无论其支持的方向如何(使用supportedInterfaceOrientations方法设置),它都会保持纵向。有没有办法让视图自动旋转?我努力了:

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO];

但这不起作用。

任何建议将不胜感激!

4

2 回答 2

2

做到这一点的一种方法是覆盖preferredInterfaceOrientationForPresentation,但为了被称为​​ viewController 必须呈现(如在模式中),而不是像这里提到的那样推送:

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    NSLog(@" preferred called");
    return UIInterfaceOrientationPortrait;
}

为了在 UINavigationController 中显示您的 viewController,请使用:

UINavigationController *presentedNavController = [[UINavigationController alloc] initWithRootViewController:protraitViewController];

[self presentViewController:presentedNavController animated:YES completion:nil];

为了使 UINavigationController 尊重您当前的 viewController 的方向偏好,请使用这个简单的类别而不是子类。

此外,Apple 文档的这一部分对于更好地理解 iOS 方向处理来说是一本很好的读物。

于 2013-04-21T19:05:01.777 回答
-1

在 UIViewController 中为您的纯横向视图定义以下内容:

- (UIInterfaceOrientation) supportedInterfaceOrientations
{ return UIInterfaceOrientationLandscapeLeft; } // or right or both

这应该可以防止您的视图以纵向显示。来自 iOS 文档:

声明首选的呈现方向 当视图控制器全屏呈现以显示其内容时,有时当以特定方向查看时内容看起来最好。如果内容只能以该方向显示,那么您只需将其作为 supportedInterfaceOrientations方法中的唯一方向返回。

于 2013-04-21T15:51:35.877 回答