在 iOS 中实现动态 tableViewCell 的最佳方法

Posted

技术标签:

【中文标题】在 iOS 中实现动态 tableViewCell 的最佳方法【英文标题】:best way to implement dynamical tableViewCell in iOS 【发布时间】:2012-03-08 09:30:35 【问题描述】:

在图像上你可以看到我需要实现的屏幕

http://cs301703.userapi.com/u20441799/154158276/z_aadbf840.jpg

我对动态表格单元格高度大小感到困惑,因为电影标题和描述可能不同。 ios 中是否有类似 android 中的 LinarLayout 的东西,我可以在其中放置元素并调整布局的大小?

为 TableView Cell 使用自定义 xib 与所有需要的视图(图像视图、标签等)或以编程方式将视图添加到 TableView Cell 是否更好?

提前致谢。

【问题讨论】:

【参考方案1】:

XIB 和编程都很好。

要调整单元格的高度,请计算必要的高度并将其返回到表格视图控制器的heightForRowAtIndexPath。您必须为每一行返回适当的高度。

【讨论】:

好的,但是如果电影标题标签变大(高度),我该如何向下移动电影描述标签?是不是需要先计算title label的高度再偏移description label? 是的,您必须动态调整这些元素的大小和位置。这是在您自定义单元格的部分中的cellForRowAtIndexPath 中完成的。【参考方案2】:

查看您的设计,我建议您应该保持单元格高度一致,而不是针对不同的条目进行更改。应该改变的是标签高度/宽度和字体大小/重量,以适应​​每部电影的标题。

如果表格中有很多单元格,则保持统一的单元格高度可以获得性能优势,而且如果您重复使用单元格,那么统一的单元格对您来说会更好。

回复:XIB / 程序化

在 XIB 中做这种事情可能会非常令人沮丧,但一旦你克服了以下症结,它确实是最好的。

关键点:您不使用文件所有者(在占位符下)链接到您的 IBOutlets,而是使用单元格本身(在对象下)。

您还必须确保单元对象连接到正确的类(在身份检查器中)。

一旦您使用笔尖的 IOBOutlets 获得子类单元格,这种工作可能会很有趣。

这可以通过简单的方式以编程方式完成,只需将子视图添加到您创建的任何类型的单元格。您不会有上面突出显示的问题,但在繁忙的单元格中,您最终会在 cellForRowAtIndexPath: 中得到大量代码,这不太理想。

【讨论】:

感谢您的详细回复!我会试试xib

以上是关于在 iOS 中实现动态 tableViewCell 的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS TableViewCell 上实现圆角图像?

iOS - 在旋转时使用动态单元格高度重绘 TableViewCells

在 TableView 中实现表单

IOS Swift 5 为动态高度 TableView 单元添加自定义 TableViewCell 分隔符

如何在 tableView 单元格中实现收藏按钮?

iOS7根据从API下载的图像高度动态调整TableViewCell的高度