4

我在情节提要中有 5 个视图。我希望每个视图方向都不同,例如一个视图将是UIInterfaceOrientationLandscapeRight另一个视图将是UIInterfaceOrientationLandscapeLeftorUIInterfaceOrientationPortraitUIInterfaceOrientationPortraitUpsideDown。那么如何设置不同的视图方向。

我用过 [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight]; ,但它显示警告“UIDevice 可能无法响应 setOrientation”。根据我正在使用的许多 stackoverflow 作家的说法

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
    //return UIInterfaceOrientationLandscapeLeft;
    return (toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown); 
}

上面的代码,但它在我的项目中不起作用。那么屏幕方向的正确程序是什么。提前致谢。

4

3 回答 3

2

试试这个

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:YES];

您无法设置UIDeviceOrientation,因为它是物理参数。如果您将设备保持在纵向 - 您如何以编程方式将其设置为横向?)。UIDeviceOrientation确实意味着-设备方向,而不是接口。这个答案描述了方向之间的差异: https ://stackoverflow.com/a/3897243/194544

于 2012-05-22T09:09:20.990 回答
0

您必须放入-(BOOL)shouldAutorotateToInterfaceOrientation:每个 viewController 并检查正确的方向。如果您推送仅支持例如的 viewController。upsideDown,它将被颠倒呈现。

笔记:

  • 如果您处于标签栏环境中,则行为会有所不同。请问,如果是这样的话。
  • 如果您在谈论 rootViewController 您的应用程序应该设置对应于第一个 viewController (Info.plist)
于 2012-05-22T09:12:58.570 回答
0

UIDevice 上的方向属性是只读的

您可以[UIViewController attemptRotationToDeviceOrientation];尝试将所有视图控制器旋转到设备当前方向。您不能强制设置旋转。

于 2012-05-22T09:13:46.947 回答