ios - UITableViewCell + 动态高度 + 自动布局

标签 ios uitableview autolayout uilabel row-height

我来自这个很棒的答案:
Using Auto Layout in UITableView for dynamic cell layouts & variable row heights

我已经实现了该答案中描述的内容,但我面临着一些不同的情况。我没有一个 UILabel 但我有一个 UILabel 的动态列表。

我创建了一张图片,展示了表格 View 的一些不同情况:

enter image description here

在 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/

相关文章:

ios - 出于 ScreenTime 的目的,我如何将我的 iOS 应用与特定网站 URL 相关联?

ios - iOS 11 中的 UITableViewCell 重新排序样式

swift - 如何通过设置 frame 属性来移动或调整 NSView 的大小?

ios - 如何在 Xamarin Forms 中布局自定义 iOS View (UIStackView/UILabel)

ios - UITableViewCell 不起作用,除非我将 View 添加到容器 View 而不是 contentView

iOS swift 如何知道即使应用程序被终止,是否有任何联系人已更新

objective-c - 来自Twitter TWRequest处理程序的泄漏

ios - 设置UIBarButtonItem不更改标题,仅更改样式

ipad - 从 RootController 更新 DetailViewController

ios - 如何更改 iOS TableView 索引颜色?