【问题标题】:Autolayout constraints work in iOS 8 and break in iOS 9自动布局约束在 iOS 8 中有效,在 iOS 9 中中断
【发布时间】:2015-08-28 16:11:49
【问题描述】:

我有一个用 Swift 编写的 Xcode 6.2 项目。问题是我在 iOS 8 上正常工作的自动布局约束在 iOS 9 Beta 5 上中断(在 Beta 1 中工作,不确定其他)。我已经重做约束并研究了问题,但我找不到任何方法来解决 iOS 9 上的这个问题。这可能发生的原因有什么?

我可以上传您需要的任何内容来帮助您找到解决方案;我没有上传约束,因为这似乎是一个应用范围的问题,并非特定于任何约束。

【问题讨论】:

  • 上传其中一个问题的屏幕截图,包括控制台中的错误。
  • 控制台没有错误。只是 UI 搞砸了
  • 'beak' 不是一个描述性很强的错误。发布问题的完整错误或屏幕截图,并发布重现问题的示例代码。
  • “我没有上传约束,因为它似乎是一个应用程序范围的问题,并非特定于任何约束。”好吧,对于其他人来说,这不是一个应用程序范围的问题,所以也许你最好提供一些细节,嗯?在 iOS 9 beta 5 中,约束并没有神奇地打破。一定是做错了什么。
  • 可能是因为您使用的是不同屏幕尺寸的不同模拟器?

标签: xcode swift ios8 ios9


【解决方案1】:

@jamespick 你必须更新你的容器视图而不是整个UIViewController

让我用几行代码解释一下。
在IOS 9之前...

[self.view setNeedsUpdateConstraints];
[self.view setNeedsLayout];

IOS 9 之后及所有版本之后...

[self.containerView setNeedsUpdateConstraints];
[self.containerView setNeedsLayout];

由于 IOS 9 及更高版本,您不能再在视图上调用 setNeedsUpdateConstraintssetNeedsLayout 并期望子视图的约束会更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 2015-12-16
    • 2015-03-16
    • 2016-02-04
    相关资源
    最近更新 更多