Sin*_*aSB 6 tableviewcell ios swift
我想在 tableView 中有不同大小的单元格,但是在构建和运行应用程序之后,我看到所有单元格的大小都相同,并且较大的单元格被裁剪并且其内容变得不完整。我在属性检查器中设置尺寸。
小智 6
它就像实现一样简单:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return CGFloat(#your desired size#)
}
Run Code Online (Sandbox Code Playgroud)
只需在此函数中使用 switch/case 并使用 indexPath.row。您还可以UITableViewAutomaticDimension用于自动调整大小
编辑:
根据标题、这个问题的描述和提供的图片,我猜测了 3 种可能的情况,并试图在上面的简短回答中涵盖所有内容。但正如Rikh认为情况并非如此,我将把事情弄清楚。
请记住,对于动态行,您必须在自动布局中将所有视图固定在它们的位置,这意味着您必须设置从场景顶部到底部和从左到右的约束。可能的情况是:
情况 1: 您的表格中有 2 个不同的单元格,并且您知道它们的大小(第一行是 type1,其他单元格是 type2)。
在这种情况下,您只需要在我这样提到的函数中添加一个 if 子句或 switch/case(假设第一行是 88 点,其余是 44 点):
return indexPath.section == 0 ? CGFloat(88.0) : CGFloat(44.0)
Run Code Online (Sandbox Code Playgroud)
情况 2: 您的第一行是固定大小,其余是动态的。
在对单元格设置正确的约束后,viewDidLoad添加tableView.estimatedRowHeight = CGFloat(44.0)其中的estimatedRowHeight 是单元格的最小可能高度。然后你可以这样写你的代码:
return indexPath.section == 0 ? CGFloat(88.0) : UITableViewAutomaticDimension
Run Code Online (Sandbox Code Playgroud)
情况 3:
您的行的高度都是动态的,您希望它们都自行扩展。在这种情况下,您根本不需要我提到的功能。实际上,如果您的代码中有它,则必须将其删除。在这种情况下,继续将此代码添加到viewDidLoad您的代码中(想象您的单元格的最小可能高度为 44 点):
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = CGFloat(44.0)
Run Code Online (Sandbox Code Playgroud)
再次记住,正确设置所有约束以使其正常工作非常重要。一个例子:我猜“细节”标签是使你的行的高度增长并且标题是固定大小的标签,所以这些是你的“细节”标签所需的约束:将其高度设置为大于等于(>=) 21,将其设置为在超级视图中间垂直对齐(通过在故事板中设置“垂直在容器中”约束),将水平空间设置为“标题”标签,将尾随空间设置为超级视图,将行数设置为0,使其展开无限,最后将换行属性设置为“自动换行”。在这种情况下,您的标题必须具有特定的宽度限制,否则您将收到错误消息。
PS:实际上现在我正在写这篇文章,我可以想象另一种情况,其中您的“标题”标签的宽度也是动态的。这将使您的 tableView 变得非常丑陋,但如果这是您的情况,则需要在标签上设置“内容拥抱”和“内容压缩”,此处描述(CHCR)
| 归档时间: |
|
| 查看次数: |
4269 次 |
| 最近记录: |