【发布时间】:2017-11-17 03:52:31
【问题描述】:
我有一个包含 UITextView 和 UIImageView 的 UITableViewCell。文本视图已禁用滚动。 UITableViewCell 确实使用自动布局来计算其高度以适应内容。
如果文本比屏幕截图中的多,我希望文本围绕图像流动并使用它下方的空间。因此我在文本视图上使用排除路径。排除路径设置正确,文本在图像周围流动。
必须在自动布局计算框架后设置排除路径。由于排除路径阻塞了文本视图上的一些视图空间包含的文本不再适合为文本视图计算的高度自动布局。
我怎样才能使它与自动布局一起使用?
我尝试在设置排除路径后对文本视图设置高度约束:
let size = textView.sizeThatFits(CGSize(width: textView.frame.size.width, height: CGFloat(MAXFLOAT)))
textView.heightAnchor.constraint(equalToConstant: size.height).isActive = true
这没有帮助。我需要在 UITableViewCell 上调用layoutSubviews() 以强制它重新计算其高度。但是,当我在viewDidLayoutSubviews() 中设置我的排除路径时,这将创建一个无限循环。
【问题讨论】:
-
UIView 有一个特殊的功能可以更新约束。也许尝试像这样覆盖它:
override func updateConstraints() { super.updateConstraints() let size = textView.sizeThatFits(CGSize(width: textView.frame.size.width, height: CGFloat(MAXFLOAT))) textView.heightAnchor.constraint(equalToConstant: size.height).isActive = true }
标签: ios uitextview nslayoutconstraint ios-autolayout exclusionpath