如何在具有自动布局的操作中自动增加UIScrollView中的内容大小?

时间:2016-09-07 21:56:41

标签: ios uiscrollview autolayout uilabel

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

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

现在的问题是我想要添加"扩展"标签上的行动。我们可以说,内容视图上的任何点按都应该展开标签,以便不再截断,而不是在contentView的范围内截断,我希望scrollView& #39; s contentSize增加,以便现在可以滚动完整标签的文字。我应该怎样做到这一点?

在示例项目中,点按内容视图会调整整个scrollView约束,以说明标签现在有不同的空间可供使用。我现在不知道如何让scrollView重新计算它contentSize以使标签不再截断。

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

theLabel.setContentCompressionResistancePriority(UILayoutPriorityRequired, forAxis: .Vertical)

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

1 个答案:

答案 0 :(得分:1)

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