使用UITableViewAutomaticDimension的最小单元格高度

时间:2016-02-03 05:25:18

标签: swift uitableview uitableviewautomaticdimension

是否可以为细胞设定最小高度?我用动态:

tableView.estimatedRowHeight = 83.0
tableView.rowHeight = UITableViewAutomaticDimension

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

6 个答案:

答案 0 :(得分:47)

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

答案 1 :(得分:8)

知道了。使其工作如下。

将视图拖放到UITableViewCell顶部,并将约束前导,尾随,顶部和底部设置为0。 将高度约束设置为> = ExpectedMinimumSize。

在heightForRowAtIndexPath Delegatemethod:

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

在ViewDidLoad中:

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

答案 2 :(得分:2)

@Hytek回答了一个窍门。为此,您必须给出最小高度的约束。

例如:如果表单元格中有一个UILabel,并且您希望UILabel根据动态内容增加高度。并且您具有如下代码。

tableView.estimatedRowHeight = 83.0
tableView.rowHeight = UITableViewAutomaticDimension

当内容较大时,它将增加标签的高度,但当内容较小时,也会减小。因此,如果您希望标签的高度最小,则必须以UILabel的方式给height >= 30.0设置高度限制。

enter image description here

这样,您的UILabel所降低的高度不会小于30.0

答案 3 :(得分:1)

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

答案 4 :(得分:1)

将contentViews heightAnchor设置为所需的最低高度。

以编程方式实现Swift 4.2版本

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

答案 5 :(得分:0)

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

E.g。 (以编程方式在自定义单元格中)

    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]];