如何使用 AutoLayout 在一个 UITableView 中设置具有两个原型的 UITableViewCell 的 AutoHeight?

Posted

技术标签:

【中文标题】如何使用 AutoLayout 在一个 UITableView 中设置具有两个原型的 UITableViewCell 的 AutoHeight?【英文标题】:How to set AutoHeight of UITableViewCell with two prototypes in one UITableView using AutoLayout? 【发布时间】:2017-05-15 17:19:05 【问题描述】:

我有带有 两个 单元原型的 UITableView。它看起来像:

我知道,对于自动高度,我需要添加一些约束,tableView.rowHeight = UITableViewAutomaticDimension 等。我已经在另一个控制器中完成了。但实际上我找不到(我已经搜索了很长时间),如何将 2 个原型合二为一 tableView

所以,问题是:如何使用 Autolayout(不是 height for row at index path)来实现?或者我应该使用一些库,比如IGListKit 等?

【问题讨论】:

您能否展示每个原型,只是尺寸不正确?或者您甚至无法展示 2 个不同的原型单元? @DonMag 两者都出现了,但大小不正确。 您的自动布局出现错误,请参见右上角的红色箭头 OK...您成功自动调整一个单元格类型的大小了吗? 好吧,如果您有 1、2 或 20 个不同的原型单元格,这根本不重要。如果它们每个都设置正确 - 适当的约束等 - 那么它们都会正确地自动调整大小。检查您的约束,看看您是否有任何需要修复的地方(红色箭头表示是的,您有约束/布局错误)。 【参考方案1】:

图像表明您有一些无效/不完整的约束。如果您解决了这些问题,自动调整大小应该可以正常工作。

【讨论】:

【参考方案2】:

实现自动标注不需要任何代码,只需在代码中将tableView.estimatedRowHeight = 440设置为viewDidLoad()即可。对于估计的行高,任何正数都可以。

在情节提要中,您必须使用布局约束确保单元格布局在自上而下的方向上不会中断。例如,在您发布的图像中,左侧和右侧的两个图像视图必须以某种方式与 contentView 顶部(或其边缘)有一定距离。对于图像视图,它们的高度也需要定义。标签“日期”应该与图像有一段距离,然后到contentView 的底部(或其边距)的距离,因此从单元格顶部到底部的布局是不模糊的。

请注意,如果您使用 UILabel,则根据标签文本,隐含并计算宽度和高度。为了使您的用例达到最佳效果,内容压缩阻力优先级和拥抱优先级也可能对您有用。

【讨论】:

谢谢解答!

以上是关于如何使用 AutoLayout 在一个 UITableView 中设置具有两个原型的 UITableViewCell 的 AutoHeight?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 中成功使用 AutoLayout 和 Constraints?

我们如何为多个 UITab 使用相同的 WKWebView

在应用程序中使用两个不同的 uitab bar

如何使用 AutoLayout 制作均匀分布的图像行? [复制]

如何使用水平滚动以编程方式执行 AutoLayout?

如何使用 AutoLayout 在一个 UITableView 中设置具有两个原型的 UITableViewCell 的 AutoHeight?