如何使用自动布局自动增加 UIScrollView 中的内容大小?
How to automatically have content size increase in UIScrollView on an action with autolayout?
我已经为这个问题设置了一个测试项目 (project here) 以更好地说明我的问题,但这是我面临的核心问题:
我有一个 UILabel
嵌套在内容 UIView
中,内容 UIView
本身嵌套在 UIScrollView
中,这一切都是用 AutoLayout 布局的。我的初始布局效果很好,标签被适当截断以适应初始布局约束所需的内容视图。到目前为止一切都很好。
现在的问题是我想在标签上添加一个 "expand" 动作。假设在内容视图上的任何点击都应该扩展标签,这样就不再有截断,而不是在 contentView
的边界内截断,我希望 scrollView
的 contentSize
增加使得现在可以滚动完整标签的文本。我该如何完成?
在示例项目中,点击内容视图将调整整个 scrollView
的约束,只是为了说明标签现在有不同数量的 space 可以使用。我不知道现在如何让 scrollView
重新计算它是 contentSize
,这样标签就不再被截断了。
我试过使用内容压缩优先级,并根据正在执行的操作更改它,如下所示:
theLabel.setContentCompressionResistancePriority(UILayoutPriorityRequired, forAxis: .Vertical)
但这似乎并没有真正强制标签不会被截断。我还尝试在点击操作时使 scrollView
的固有内容大小无效,但无济于事。如何切换标签是否应截断?
通常,您有一个约束将标签或视图的高度固定到您的最小高度,当您想要扩展时,您可以禁用它(使其处于非活动状态)并布置视图。要压缩重新启用约束并布局视图。
我已经为这个问题设置了一个测试项目 (project here) 以更好地说明我的问题,但这是我面临的核心问题:
我有一个 UILabel
嵌套在内容 UIView
中,内容 UIView
本身嵌套在 UIScrollView
中,这一切都是用 AutoLayout 布局的。我的初始布局效果很好,标签被适当截断以适应初始布局约束所需的内容视图。到目前为止一切都很好。
现在的问题是我想在标签上添加一个 "expand" 动作。假设在内容视图上的任何点击都应该扩展标签,这样就不再有截断,而不是在 contentView
的边界内截断,我希望 scrollView
的 contentSize
增加使得现在可以滚动完整标签的文本。我该如何完成?
在示例项目中,点击内容视图将调整整个 scrollView
的约束,只是为了说明标签现在有不同数量的 space 可以使用。我不知道现在如何让 scrollView
重新计算它是 contentSize
,这样标签就不再被截断了。
我试过使用内容压缩优先级,并根据正在执行的操作更改它,如下所示:
theLabel.setContentCompressionResistancePriority(UILayoutPriorityRequired, forAxis: .Vertical)
但这似乎并没有真正强制标签不会被截断。我还尝试在点击操作时使 scrollView
的固有内容大小无效,但无济于事。如何切换标签是否应截断?
通常,您有一个约束将标签或视图的高度固定到您的最小高度,当您想要扩展时,您可以禁用它(使其处于非活动状态)并布置视图。要压缩重新启用约束并布局视图。