【问题标题】:Rotation with Autolayout not working自动布局的旋转不起作用
【发布时间】:2014-07-11 23:36:02
【问题描述】:

当我在 IB 中打开 Autolayout 旋转我的设备时,不会调用以下方法。

willRotateToInterfaceOrientation:duration:

首先,上述方法是否不适用于自动布局?该方法在 Autolayout 关闭的情况下被调用。我正在尝试更改旋转视图的背景图像,不知道如何在启用自动布局约束的情况下实现这一点?

我也尝试使用Moin 的过程,但我有一个巨大的视图层次结构,并且这些方法是从 superview 开始调用的,而且我在其他方法中还有很多其他代码。所以它没有帮助

didRotateFromInterfaceOrientation  

【问题讨论】:

  • 您一定是做错了什么,因为该方法的运行不应该与自动布局是打开还是关闭有任何关系。我总是使用自动布局,这种方法对我很有效。
  • @rdelmar:谢谢。因此,当我旋转设备时,这些方法会自动调用。只有当我将我的 xib 更改为 autlayout 时,他们才不会被调用。我在所有 xib 文件上对此进行了测试,并且没有调用这些方法。那么可能出了什么问题呢?因为它在没有自动布局的情况下工作正常。有什么我想念的吗?
  • 对不起,我不知道。它一直对我有用。我刚刚在一个带有 xib 定义的控制器的新应用上尝试了它,它被调用了。
  • 什么是根控制器? UITabBarControllerUINavigationController 或两者都不是?

标签: objective-c ios7 autolayout ios-autolayout


【解决方案1】:

简短的回答: -willRotateToInterfaceOrientation:duration: 工作 与 AutoLayout。

长答案: 假设您使用的是 NIB,那么许多复合问题可能会出错;我编制了这份清单:

  1. 您是否按照@JoshJustice 在Loaded nib but the view outlet was not set - new to InterfaceBuilder 的建议在 IB 中设置了自定义 UIViewController
  2. 您是否按照@nybon 在UIViewController does not auto rotate 的建议正确处理自动旋转
  3. 您是否按照@NateFlink 在Handling autorotation for one view controller in iOS7 的建议在plist 中设置了全局方向
  4. 您的自定义 UIViewController 是否以不正确的值响应 -supportedInterfaceOrientations?请参阅@AndrewHershberger 在preferredInterfaceOrientationForPresentation must return a supported interface orientation (iOS 6) 的推荐回复

【讨论】:

  • 感谢您的回答。您能否详细说明“您是否在 IB 中设置了自定义 UIViewController”和“您是否正确处理自动旋转?”是什么意思?正如我在问题中所说,自动旋转在没有自动布局的情况下完美运行。
  • 对于您的应用程序出错的原因没有一个答案(直到您找到它),但您的问题有一个答案:首先上述方法是否适用于自动布局? 是的,他们可以我已经格式化了我的回复并添加了指向您应该查看的可能位置的链接。
【解决方案2】:

-willRotateToInterfaceOrientation:duration: 在根视图控制器及其所有子视图控制器上被调用,并与自动布局一起使用。如果您希望这些方法在特定视图控制器上被调用,它必须是根视图控制器的子视图控制器。

我花了一段时间才发现从根到最后一个视图控制器的层次结构在某个时候中断了。我只需要将它添加回子视图控制器。

【讨论】:

    猜你喜欢
    • 2012-09-17
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多