【问题标题】:Why does autorotation happen in iOS 6 but not iOS 5?为什么在 iOS 6 中会发生自转,而在 iOS 5 中不会发生?
【发布时间】:2013-07-03 15:41:49
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 这听起来更像是一个自动旋转问题,而不是一个自动布局问题。您知道 iOS 6 引入了与 iOS 5 不同的自动旋转系统吗?
  • @Daniel,您实际上是唯一回答我问题的人。您应该发布一个我可以接受的答案。自动旋转是 iOS 6 的默认行为吗?为什么在未激活 AutoLayout 的 iOS 6 模拟器中正确调整视图大小?谢谢。
  • 看起来有人打败了我。 :(
  • 对不起!不过还是谢谢你。还有一次机会……
  • 您可能仍然对此感兴趣:stackoverflow.com/a/12623916/662605

标签: ios ios-simulator autolayout


【解决方案1】:

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 上,您不会获得任何界面旋转。

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

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

【讨论】:

  • 你好,罗伯。一如既往的出色回答。非常感谢!你帮了我很多。当 Apple 引入此类更改时,我从哪里获得此类一般信息?
  • 阅读发行说明。观看 WWDC 视频。至少观看“XXX 的新功能”视频。
【解决方案2】:

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

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

【讨论】:

  • 这不是 100% 正确的。我有一部仍在运行 iOS 5.0 的 iPhone 4S(是的,你没听错),我从 appstore 安装的几乎所有前 300 个应用程序都在我的设备上运行。这意味着开发人员仍然支持 iOS 5.0 或更低版本。我也这样做。几乎我所有的应用程序都兼容 iOS 5.0 和 iOS 6.0,我确实注意到同时支持 5.0 及更高版本的应用程序的回报率更高
  • BlackRider,感谢您的帖子。我知道 AutoLayout 不能在 iOS 5 中使用。你知道为什么视图在未激活 AutolAyout 的情况下在 iOS 6 模拟器中仍然可以正确调整大小吗?
  • 这可能是因为他们的autoresizingMask 配置正确。您的视图仍然可以在没有 AutoLayout 的情况下调整大小,但它们总是相对于其父级调整大小。而使用 AutoLayout,他们还可以相对于他们的对等视图调整大小。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多