web-dev-qa-db-ja.com

UITableViewAutomaticDimensionでの最小セルの高さ

セルの最小の高さを設定することは可能ですか?私は動的を使用します:

tableView.estimatedRowHeight = 83.0
tableView.rowHeight = UITableViewAutomaticDimension

しかし、news title label textが1行にある場合、セルの最小の高さを設定する必要があります。

20
aaisataev

カスタムUITableViewCellheight >= 60.0のビューに制約を作成してみましたか?

48
Hytek

とった。以下のように動作させました。

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.
8
YSR fan

@Hytekが答えるトリックがあります。このためには、最小の高さの制約を与える必要があります。

例:テーブルセルにUILabelが1つあり、そのUILabelが必要な場合は、動的コンテンツに従って高さを増やします。そして、あなたはそれを以下のようにコード化します。

tableView.estimatedRowHeight = 83.0
tableView.rowHeight = UITableViewAutomaticDimension

コンテンツが大きい場合はラベルの高さが高くなりますが、コンテンツが小さい場合は低くなります。したがって、そのラベルの高さが最小でなければならない場合は、ラベルにheight >= 30.0の方法でUILabelに高さの制約を与える必要があります。

enter image description here

このようにして、あなたのUILabel30.0よりも高さを減らしません。

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

カスタムセルの自動レイアウトコードで(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]];
1
JapCon

ContentViewsのheightAnchorを最低限必要な高さに設定します。

プログラムによるSwift 4.2バージョン

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

1