是否可以为细胞设定最小高度?我用动态:
tableView.estimatedRowHeight = 83.0
tableView.rowHeight = UITableViewAutomaticDimension
但是当news title label text
在一行中时,我需要为单元格设置最小高度。
答案 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
设置高度限制。
这样,您的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]];