是否可以为单元格设置最小高度?我使用动态:
tableView.estimatedRowHeight = 83.0
tableView.rowHeight = UITableViewAutomaticDimension
news title label text
但是当我在一行时,我需要为单元格设置最小高度。
是否可以为单元格设置最小高度?我使用动态:
tableView.estimatedRowHeight = 83.0
tableView.rowHeight = UITableViewAutomaticDimension
news title label text
但是当我在一行时,我需要为单元格设置最小高度。
您是否尝试过在自定义UITableViewCell
视图中创建约束height >= 60.0
?
知道了。使其工作如下。
将一个视图拖放到 UITableViewCell 顶部,并将前导、尾随、顶部和底部约束设置为 0。将高度约束设置为 >= ExpectedMinimumSize。
在 heightForRowAtIndexPath 委托方法中:
-(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(nonnull NSIndexPath *)indexPath
{
return UITableViewAutomaticDimension;
}
在 ViewDidLoad 中:
self.tableView.estimatedRowHeight = 60; // required value.
@Hytek 回答了一个技巧。为此,您必须给出最小高度的约束。
例如:如果UILabel
您的表格单元格中有一个,并且您希望UILabel
根据动态内容增加高度。你有如下代码。
tableView.estimatedRowHeight = 83.0
tableView.rowHeight = UITableViewAutomaticDimension
当内容较大时,它会增加您的标签高度,但当您的内容较小时,它也会降低。因此,如果您希望该标签应具有最小高度,那么您必须以一种与您的标签UILabel
相同的方式height >= 30.0
对您的标签进行高度限制。
这样你UILabel
就不会减少高度30.0
。
在自定义单元格的自动布局代码(界面生成器或以编程方式)中,添加适当的约束。
例如(以编程方式在自定义单元格中)
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]];
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