如何使用自动布局自动增加 UIScrollView 中的内容大小?

How to automatically have content size increase in UIScrollView on an action with autolayout?

我已经为这个问题设置了一个测试项目 (project here) 以更好地说明我的问题,但这是我面临的核心问题:

我有一个 UILabel 嵌套在内容 UIView 中,内容 UIView 本身嵌套在 UIScrollView 中,这一切都是用 AutoLayout 布局的。我的初始布局效果很好,标签被适当截断以适应初始布局约束所需的内容视图。到目前为止一切都很好。

现在的问题是我想在标签上添加一个 "expand" 动作。假设在内容视图上的任何点击都应该扩展标签,这样就不再有截断,而不是在 contentView 的边界内截断,我希望 scrollViewcontentSize增加使得现在可以滚动完整标签的文本。我该如何完成?

在示例项目中,点击内容视图将调整整个 scrollView 的约束,只是为了说明标签现在有不同数量的 space 可以使用。我不知道现在如何让 scrollView 重新计算它是 contentSize,这样标签就不再被截断了。

我试过使用内容压缩优先级,并根据正在执行的操作更改它,如下所示:

theLabel.setContentCompressionResistancePriority(UILayoutPriorityRequired, forAxis: .Vertical)

但这似乎并没有真正强制标签不会被截断。我还尝试在点击操作时使 scrollView 的固有内容大小无效,但无济于事。如何切换标签是否应截断?

通常,您有一个约束将标签或视图的高度固定到您的最小高度,当您想要扩展时,您可以禁用它(使其处于非活动状态)并布置视图。要压缩重新启用约束并布局视图。