セルの最小の高さを設定することは可能ですか?私は動的を使用します:
tableView.estimatedRowHeight = 83.0
tableView.rowHeight = UITableViewAutomaticDimension
しかし、news title label text
が1行にある場合、セルの最小の高さを設定する必要があります。
カスタムUITableViewCell
のheight >= 60.0
のビューに制約を作成してみましたか?
とった。以下のように動作させました。
ViewをUITableViewCellの上にドラッグアンドドロップし、制約を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が答えるトリックがあります。このためには、最小の高さの制約を与える必要があります。
例:テーブルセルにUILabel
が1つあり、その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
}
カスタムセルの自動レイアウトコードで(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]];
ContentViewsのheightAnchorを最低限必要な高さに設定します。
プログラムによるSwift 4.2バージョン
contentView.heightAnchor.constraint(greaterThanOrEqualToConstant: <Required least Height>).isActive = true