带有 detailTextLabel 的 UITableViewController 估计行高度

Posted

技术标签:

【中文标题】带有 detailTextLabel 的 UITableViewController 估计行高度【英文标题】:UITableViewController estimatedRowHeight with detailTextLabel 【发布时间】:2017-02-03 11:34:55 【问题描述】:

快速提问:我有一个UITableViewController,一般设置工作正常。 我只是想微调间距。

UITableViewControllerviewDidLoad我打电话:

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 60 

我的一些默认单元格使用 detailTextLabel (style: .subtitle),而有些则不使用 (style: .default)。 当他们这样做时,单元格似乎不会调整行高。 文本看起来很拥挤,尤其是当 detailTextLabel 为两行时。

我想避免重写tableView:heightForRowAtIndexPath: 函数? 有诀窍吗?

谢谢

【问题讨论】:

有什么快速的屏幕显示正在发生的事情吗? :) 而不是使用高度属性方法尝试与高度委托方法相同。 Bcz 委托方法为每个单元格调用,因此您可以为每个单元格设置不同的高度。 使用约束。和委托方法。 查看本教程raywenderlich.com/129059/self-sizing-table-view-cells 为什么你不想覆盖这个?表视图:heightForRowAtIndexPath: 【参考方案1】:

这是系统单元格的默认行为。如果您期望另一个输出,只需创建您的自定义单元格,并根据需要提供顶部和底部约束。祝你好运;)

【讨论】:

我试过这个,但是当我设置topAnchorbottomAnchor时,标签移动了,但单元格高度没有改变。 您对单元格做了哪些自定义?我的意思是自定义单元格,具有您自己的标签的单元格,并且两个标签都设置了约束。当有正确的约束时,单元格的大小会正确调整。 好的 - 所以我不应该在我的自定义 UITableViewCell 中使用 self.textLabelself.detailTextLabel 是的,只需在情节提要或笔尖中添加 2 个标签,设置字体、行数等,并为它们添加约束。 我没有使用故事板。我试图通过使用默认标签来摆脱它。 (见上面的编辑)将尝试使用自定义标签。【参考方案2】:

我遇到了与您相同的问题,我得到了一个最佳答案。我以编程方式添加了约束,它对我有用。希望对解决您的问题有所帮助。

- (void)awakeFromNib
    [super awakeFromNib];
    for (NSLayoutConstraint *cellConstraint in self.constraints) 
        [self removeConstraint:cellConstraint];
        id first_object = cellConstraint.first_object == self ? self.contentView : cellConstraint.first_object;
        id seccondItem = cellConstraint.second_object == self ? self.contentView : cellConstraint.second_object;
        NSLayoutConstraint *contentViewConstraint =
        [NSLayoutConstraint constraintWithItem:first_object
                                 attribute:cellConstraint.firstAttribute
                                 relatedBy:cellConstraint.relation
                                    toItem:seccondItem
                                 attribute:cellConstraint.secondAttribute
                                multiplier:cellConstraint.multiplier
                                  constant:cellConstraint.constant];
        [self.contentView addConstraint:contentViewConstraint];
    

【讨论】:

也许我需要删除现有的约束。将首先尝试。 让我知道删除约束是否对您有用。 你能交换估计高度和行高的值代码吗?在我的代码中,rowHeight 高于估计的高度。

以上是关于带有 detailTextLabel 的 UITableViewController 估计行高度的主要内容,如果未能解决你的问题,请参考以下文章

Swift UITableViewCell detailTextLabel.text 抛出错误“致命错误:无法打开 Optional.None”

为啥 detailTextLabel 不可见?

在 UITableViewCell 中为 detailTextLabel 添加右边距

在 UITableViewCell 中的 detailTextLabel 中添加多行

单元格的 detailTextLabel 未在 swift 3 中显示

UITableViewCell detailTextLabel 未显示