强制UIViewController仅以横向模式显示

时间:2011-03-17 13:28:09

标签: iphone objective-c uiviewcontroller orientation

我的应用程序以纵向模式运行,但我想以横向模式显示一个屏幕,因为它是一个图表。我将如何添加到我的uiviewcontroller以强制它进入横向模式?

3 个答案:

答案 0 :(得分:14)

我很抱歉,但这个答案很短:如果您使用的是UINavigationController,则不能。因此@jer给出的答案是错误的。 Apple文档声明:

  

UITabBarController或UINavigationController中的所有子视图控制器都不同意公共方向集。

我最近在赏金上回答了这个问题,我的应用程序在此过程中被拒绝了。请在此处阅读:How to constrain autorotation to a single orientation for some views, while allowing all orientations on others?

你拥有的唯一解决方案是丢弃UINavigationController并用你自己的东西重写它。

答案 1 :(得分:3)

通过以模态方式显示和取消视图控制器,您可以强制方向。将动画设置为“NO”,您可以在用户没有意识到它发生的情况下执行此操作。

您可以在Is there a documented way to set the iPhone orientation?

上详细了解这个Josh的答案

我认为这有点像黑客攻击,但我已成功使用此前提实现代码强制任何设备方向。

答案 2 :(得分:2)

您实施shouldAutorotateToInterfaceOrientation:并仅为UIInterfaceOrientationIsLandscape(param)返回YES,其中param是您为方法声明的参数。

这将支持横向左侧和横向右侧,而不是仅将您锁定到一个横向方向。