Xcode 6: 无法在不改变宽度的情况下调整 textview 的高度

Xcode 6: Unable to resize textview height without changing the width

我正在尝试调整高度以包含不同的文本字符串,但我在 运行 时遇到了文本视图宽度不同的问题。 当我在 运行 时检查框架设置时,宽度小于约束宽度 316。结果文本被截断。

该场景使用带有文本视图和嵌入两个按钮的滚动视图。 没有可见的约束错误,尽管有这些警告 "Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration." 我试图找到任何不正确的约束,但如果我禁用任何约束,我会立即收到错误。另一位用户建议我应该记录这些约束,但我知道如何做到这一点的唯一方法是手动。另一个类似配置的场景运行没有错误。

导致问题的代码是:

override func viewWillAppear(animated: Bool) {

    let fixedWidth = textView.frame.size.width
    textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
    let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
    var newFrame = textView.frame
    newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
    textView.frame = newFrame;
    textView.scrollEnabled = false
}

当我暂停代码时 fixedWidth = 300(高度 200)但 newSize 是 293 x 169。它没有保持固定宽度。这是由于约束错误还是此代码中的错误?

如果您将 UILabel 用于静态文本,只需将 preferredMaxLayoutWidth 设置为等于其宽度即可。然后 Auto Layout 将正常运行,因为 intrinsicContentSize 将被限制为此宽度,并且它会自动计算正确的高度。

在我修改视图以确认其行为后(在我提交此问题后)它开始正常工作。我完全不知道是什么导致了这个工作,除了我删除了我在尝试解决问题时添加的用于强制高度的高度限制。