【问题标题】:iPhone force rotationiPhone 强制旋转
【发布时间】:2011-01-08 05:51:42
【问题描述】:

我一直在阅读大量关于轮换的内容,但没有找到我的查询的解决方案。如下:

我的标签中有一个带有标签栏和隐藏导航控制器的纵向应用程序。在应用程序中的某个点,下一个视图必须是横向的。

XIB 布局是横向完成的,所以我想在没有任何翻译或像素移动代码的情况下调出 xib。 (不认为这是必需的)我试过只是推动视图(保持纵向),使用各种方法移动视图(似乎没有正确排列)。

有没有办法告诉视图在打开之前它已经为横向布局了?

提前致谢!

【问题讨论】:

标签: iphone


【解决方案1】:

找到了,这段代码在 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];

有没有人种下这种行为并解决了?

【讨论】:

    【解决方案2】:

    我很肯定你不能“强制”轮换。系统决定何时改变设备的方向;所以“方向”属性本质上是只读的。很久以前,当我想确保特定视图始终以一个方向显示时,我就研究过同样的问题。

    因此,大多数应用允许其所有视图和视图控制器在应用支持的任何方向上工作。我发现尝试限制某些视图和视图控制器的行为最终会带来更多麻烦,并且可能会在视图和视图控制器之间转换时出现问题。

    您发布的代码将适用于您的视图。您实际上根本没有改变方向。您的视图只是表现得好像它已通过以旋转方式绘制而旋转。我不确定你是否可以对导航栏做同样的事情,但值得一试。如果您能够控制导航栏的视图属性(它也是一个 UIView),那么应用您用于自定义视图的相同模式应该可以工作。

    大多数只希望视图处于横向状态的应用最终会强制其整个应用处于横向状态。例如,Flight Control 仅支持一种方向。因此,绘图代码非常简单;无论方向如何,只需绘制视图并将其旋转到它支持的一个方向(横向或横向)。

    您的应用设计不会那么简单...听起来您不是在设计全屏应用。您将不得不担心导航栏和状态栏是否正确绘制。

    【讨论】:

    • 好点,我没有从这个角度考虑过。
    猜你喜欢
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    相关资源
    最近更新 更多