在运行时设置UIInterfaceOrientation

时间:2012-05-21 12:28:35

标签: iphone ipad xcode4.3

我在故事板中有5个视图。我希望每个视图方向都不同,例如,一个视图将UIInterfaceOrientationLandscapeRight另一个视图将是UIInterfaceOrientationLandscapeLeftUIInterfaceOrientationPortraitUIInterfaceOrientationPortraitUpsideDown。那么如何设置这种视图方向是不同的。

我用过 [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];  但它显示警告'UIDevice可能无法响应setOrientation'。根据我正在使用的许多stackoverflow编写器

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

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

3 个答案:

答案 0 :(得分:2)

试试这个

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

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

答案 1 :(得分:0)

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

注意:

  • 如果您处于tabbar环境中,则行为会有所不同。请问,如果是这样的话。
  • 如果您正在谈论rootViewController,您的应用应该设置对应于第一个viewController(Info.plist)

答案 2 :(得分:0)

UIDevice上的orientation属性为只读

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