iPhone 强制旋转屏幕

5

我一直在阅读关于屏幕旋转的相关内容,但是没有找到解决我的问题的方法。下面是我的问题:

我有一个竖屏应用程序,在我的选项卡中隐藏了导航控制器。在应用程序的某个点上,下一个视图必须是横屏。

XIB布局已经完成了横屏,所以我想在不使用任何平移或像素移动代码的情况下显示XIB。(我认为这不是必需的)我尝试了只推送视图(仍然是竖屏),使用各种方法来移动视图(似乎没有将其正确对齐)。

是否有一种方法可以在打开视图之前告诉它已经为横向布局?

提前感谢您的帮助!


在这里找到这个问题的答案链接 - Mark
更具体地说,请查看该问题上获得77个赞的答案:https://dev59.com/KnVC5IYBdhLWcg3wykej#4915378 - 推送和弹出虚拟视图控制器似乎至少在iOS 5.1及以下版本中运行良好。 - Ivan Vučica
2个回答

7

我找到了,这段代码可以在viewdidload中实现:

self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90));
self.view.bounds = CGRectMake(0.0, 0.0, 460.0, 320.0);

还有一件奇怪的事情。无论我如何将导航栏设置为隐藏,它都不会旋转,仍然停留在视图的左侧。

[[self navigationController] setNavigationBarHidden:YES animated:NO];

有人遇到过这种问题并解决了吗?

3
我确定你无法“强制”旋转设备。系统决定何时更改设备的方向;因此,“方向”属性基本上是只读的。很久以前,当我想确保特定视图始终以一种方向显示时,我也研究过这个问题。
因此,大多数应用程序允许其所有视图和视图控制器在应用程序支持的任何方向中工作。我发现试图限制某些视图和视图控制器的行为最终会创建更多的麻烦,并且在过渡视图和视图控制器之间时可能会引起问题。
您发布的代码将适用于您的视图。您实际上没有改变方向;您的视图只是通过以旋转的方式进行绘制来表现得像已经被旋转了。我不确定您是否可以对导航栏执行相同的操作,但值得一试。如果您能够控制导航栏的视图属性(它也是一个UIView),则应用于自定义视图的相同模式应该有效。
大多数只希望视图处于横向模式的应用程序最终会强制整个应用程序处于横向模式。例如,Flight Control仅支持一种方向。因此,绘图代码非常简单;无论方向如何,只需绘制视图并将其旋转到它支持的一个方向(左侧或右侧横向)。
您的应用程序设计不会那么简单……听起来您没有设计全屏应用程序。您必须确保导航栏和状态栏被正确绘制。

很好的观点,我没有从那个角度考虑过。 - Rob Bonner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接