UITableViewAutomaticDimension 的最小单元格高度

Minimum cell height with UITableViewAutomaticDimension

是否可以设置单元格的最小高度?我使用动态:

tableView.estimatedRowHeight = 83.0
tableView.rowHeight = UITableViewAutomaticDimension

但是当我的 news title label text 排成一行时,我需要为单元格设置最小高度。

您是否尝试过在自定义 UITableViewCellheight >= 60.0 视图中创建约束?

在自定义单元格的自动布局代码处(Interface Builder 或以编程方式),添加适当的约束。

例如(以编程方式在自定义单元格中)

    UILabel * label = [UILabel new];
    [self.contentView addSubview:label];
    NSDictionary * views = NSDictionaryOfVariableBindings(label);
//Inset 5 px
    [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-5-[label]-5-|" options:0 metrics:nil views:views]];
    [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-5-[label]-5-|" options:0 metrics:nil views:views]];
// height >= 44
    [self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:self.mainLabel attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationGreaterThanOrEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:44.0]];

知道了。使其工作如下。

在 UITableViewCell 上拖放一个 View,并将约束条件 Leading、Trailing、top 和 Bottom 设置为 0。 将高度约束设置为 >= ExpectedMinimumSize。

在 heightForRowAtIndexPath 委托方法中:

-(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(nonnull NSIndexPath *)indexPath
{
    return UITableViewAutomaticDimension;
}

在 ViewDidLoad 中:

self.tableView.estimatedRowHeight = 60; // required value.

@Hytek 回答了一个技巧。为此,您必须给出最小高度的限制。

例如:如果您的 table 单元格中有一个 UILabel,并且您希望 UILabel 根据动态内容增加高度。你有像下面这样的代码。

tableView.estimatedRowHeight = 83.0
tableView.rowHeight = UITableViewAutomaticDimension

当内容较大时,它会增加你的标签高度,但当你的内容较小时,它也会降低。因此,如果您希望标签应该具有最小高度,那么您必须以 height >= 30.0 对标签的方式对 UILabel 进行高度限制。

这样你的 UILabel 高度就不会低于 30.0

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return (UITableView.automaticDimension > minimumHeight) ? UITableView.automaticDimension : minimumHeight
}

将 contentViews heightAnchor 设置为您的最低要求高度。

Swift 4.2 版本编程

contentView.heightAnchor.constraint(greaterThanOrEqualToConstant: <Required least Height>).isActive = true