我来自这个很棒的答案:
Using Auto Layout in UITableView for dynamic cell layouts & variable row heights
我已经实现了该答案中描述的内容,但我面临着一些不同的情况。我没有一个 UILabel
但我有一个 UILabel
的动态列表。
我创建了一张图片,展示了表格 View 的一些不同情况:
在 repo 的当前状态下,单元格不会垂直增长以适应单元格的 contentView
。
更新
repo :https://github.com/socksz/DynamicHeightCellAutoLayout
如果您尝试从存储库中获取项目并运行它,您可以准确地看到我指的是什么问题。我无法得到缺少的东西,让它工作。
最佳答案
这里的问题是您使用的第三方组件 FXLabel,而不是表格 View 周围的任何代码或其中的自动布局。为了支持自动布局,UIView 的自定义子类必须适本地实现 -[intrinsicContentSize]
方法,然后在发生更改时调用 -[invalidateIntrinsicContentSize]
。
在这种情况下,FXLabel 似乎依赖于其父类(super class)实现 (UILabel) 来实现上述方法,并且由于 UILabel 并未设计为以 FXLabel 实现它的方式处理可变行间距,因此它不知道正确的intrinsicContentSize 返回,因此自动布局计算是错误的(在这种情况下,因为内在内容大小太小)。查看 this excellent obcj.io article 的“为自动布局启用自定义 View ”部分了解更多详情。
好消息是,从 iOS 6 开始,您应该能够使用标准 UILabel 中的属性字符串来完成此操作。查看Stack Overflow answer here .
如果出于某种原因您真的喜欢 FXLabel,也许您可以在 GitHub 项目上提出问题(或者尝试自己修复并提交拉取请求)。
关于ios - UITableViewCell + 动态高度 + 自动布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20597968/