我设置一个测试项目(project here)对于这个问题,更好地说明我的问题,但这里的核心问题是我现在面临:如何在自动布局的动作中自动增加UIScrollView的内容大小?
我有嵌套内容UIView
其本身内部嵌套内的UILabel
一个UIScrollView
,这是所有与AutoLayout布局。我的初始布局效果很好,并且标签根据初始布局约束被正确截断以适合其内容视图。到目前为止,一切都很好。
现在的问题是我想在标签上添加一个“展开”动作。假设内容视图上的任何点击都应该展开标签,以便不再截断,而不是在contentView
的边界内截断,而是要增加scrollView
的contentSize
,以便现在可以滚动完整标签的文本。我应该如何做到这一点?
在示例项目中,点击内容视图将调整整个scrollView
的约束,以说明标签现在有不同的空间可用。我被困在如何现在有scrollView
重新计算它的contentSize
,使标签不再截断。
我试着内容压缩优先播放,并改变基于动作正在做,就像这样:
theLabel.setContentCompressionResistancePriority(UILayoutPriorityRequired, forAxis: .Vertical)
但是,这似乎并没有真正执行,标签是不会截断。我也尝试通过点击操作使scrollView
的固有内容大小无效,但无济于事。如何切换标签是否应该截断?
不知道这是如何回答我的问题。如果我有一个最小高度约束,然后在展开时禁用,我仍然不明白这将如何解决滚动视图内容大小未增加以匹配标签高度(如果它未被截断)的问题。我成功地将标签大小与其父内容视图一起扩展,但是如何强制执行标签不会截断?你建议手动计算完整高度并为此设置一个约束条件? – BHendricks
不,标签具有内在内容大小,最小高度限制会覆盖该内容或使其生效。如果已将视图固定到滚动视图的边缘和宽度,则在约束更改后布置视图会更新内容大小。 – Wain
仍不知道这是如何回答我的问题。我的UILabel通过顶部/左边/右边/底部的一组约束最初在折叠状态下适当地调整大小到它的内容视图。当我将内容视图的父级(滚动视图)的约束更新为“展开”时,我看到我的问题,即标签不更新内容大小......我真的很难看出这是对此的答案问题 – BHendricks