1

我对模拟器中的 iOS 6 和 AutoLayout 有一个一般性问题。我的应用程序也针对 iOS 5 和 iOS 6。我需要在 StoryBoard 中关闭 AutoLayout,否则应用程序会在 iOS 5 模拟器中崩溃(因为 iOS6 首先支持 AutoLayout)。但是当我启动 iOS 6 模拟器时,所有视图都在旋转,所有子视图都在相应地调整大小。使用 iOS 5 模拟器时,所有视图都不会随着设备方向的改变而旋转。

这也会发生在真实设备上吗?那么,即使在 Storyboard 中关闭 AutoLayout 选项,所有视图是否会随着 iOS 6 的设备方向旋转,并且在真实设备上会更好?

谢谢!

4

3 回答 3

3

Apple 改变了 iOS 6 中自动旋转的工作方式。

如果您在 Xcode 4.6 中创建项目,Xcode 会将其设置为使用 iOS 6 自动旋转 API。项目模板允许纵向、横向左和横向右方向(以及 iPad 应用程序中的倒置纵向)。因此,当您在 iOS 6(设备或模拟器)上运行应用程序时,应用程序允许界面旋转。

当您在 iOS 5 上(在模拟器或设备上)运行该项目时,系统会忽略 iOS 6 自动旋转 API 并shouldAutorotateToInterfaceOrientation:在您的视图控制器上查找该方法。由于 Xcode 4.6 没有创建该方法(并且可能您没有添加它),系统使用默认实现,仅返回YES纵向。因此,在 iOS 5 上,您不会获得任何界面旋转。

如果您不希望界面旋转,简单的解决方案是转到目标的摘要并关闭横向。

标出横向按钮的目标摘要

您可以从几个官方来源了解更多信息:

于 2013-07-03T07:35:22.493 回答
2

就像@Patrick Tescher 所说,你不能在 iOS 5 中使用自动布局。

您还应该考虑这样一个事实,即截至 13 年 6 月,只有 6% 的用户拥有 iOS 5。与此同时,iOS 6 的采用率为 93%(来源)。这是一个非常高的数字。因此,根据您的情况,也许您不必首先使您的应用程序与 iOS 5 兼容。在一个功能上花费两倍的开发时间来让它为 6% 的用户工作可能不是一个人时间的最佳利用。除非这是一个商业决定,并且在任何一种情况下你都会得到报酬:)

于 2013-07-02T23:45:19.637 回答
0

如果你想支持 iOS 5,你不应该使用自动布局。自动布局仅在 iOS 6 及更高版本中受支持。

从技术上讲,您可以拥有两个故事板,并为 iOS 5 加载一个,为 iOS 6 加载一个,但您会重复很多工作。最好不要使用自动布局,直到您可以删除 iOS 5 支持。

于 2013-07-02T23:39:32.157 回答