我正在尝试根据内容制作具有动态单元格高度的UITableView。我的应用是文章查看器。我尝试用这些函数计算细胞的高度。
imageH: 297.25, titleH: 44.5 detailH: 56.5 totalH:398.25
当我运行时,它看起来像这样,你可以看到,底部标签被切断了。
我通过界面断点来运行它,在那里你可以看到错误的原因:
渲染的大小比sizeToFit()的估计大小大一个,正如您在我的日志语句中看到的那样:
{{1}}
我怀疑这个计算错误的原因是由于我使用错误的宽度参数提供了heightForView函数。我曾尝试使用tableView.contentSize等许多其他东西。 lineBreakMode在我的故事板和我的代码中是相同的。
我想我需要的是一种更好的方法来找到细胞的预期宽度,或任何其他能给我正确预期高度的解决方案。
答案 0 :(得分:1)
使用更少的代码(*),您可以完全抛弃heightForRowAtIndexPath
,并将autolayout
用于所有内容。
heightForRowAtIndexPath
(所有代码都会消失)viewDidLoad
中): self.tableView.estimatedRowHeight = 88
self.tableView.rowHeight = UITableViewAutomaticDimension
(*) 2行代码,确切地说。 通过将2 lines solution与multiple methods override solution进行比较来说服自己。
保证金说明
XIB
& storyboard
:您可以控制约束及其与保证金的关系
请注意,使用相对于保证金时,项目顺序很重要,因为边距通常是插入的。
有关详细信息,请参阅https://stackoverflow.com/a/25420909/218152。
storyboard
:您可以访问 IB 中的其他topLayoutGuide
和bottomLayoutGuide
属性,这些属性可能对您的视图控制器有价值,但对于UITableViewCell