使用自动布局 (VFL) 增加自定义单元格按钮的高度

Increase height of custom cell button using Auto layout (VFL)

我有一个自定义单元格,其中有 UILabelUIButtonUIImageView

你可以看到第三行右手边(按钮控件 - selectionButton)缩小了,因为按钮标题太长放不下。

这里的具体要求是根据按钮的长标题或短标题增加按钮的高度和单元格高度。

浪费了很多时间后,我想不出约束条件。

以下是上述自定义单元格排列的当前限制条件:

// Constraints
    NSDictionary *views = @{@"titleLabel" : self.titleLabel, @"selectionButton" : self.selectionButton, @"arrowImage" : self.arrowImage};

    [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-15-[titleLabel]-15-|" options: 0 metrics:nil views:views]];

    [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[selectionButton]|" options:0 metrics:nil views:views]];

    [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[arrowImage(10)]" options:0 metrics:nil views:views]];

    [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-15-[titleLabel]-2-[selectionButton]-5-[arrowImage(10)]-10-|" options: 0 metrics:nil views:views]];

    NSLayoutConstraint *constraint1 = [NSLayoutConstraint constraintWithItem:self.titleLabel attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationLessThanOrEqual toItem:self.contentView attribute:NSLayoutAttributeWidth multiplier:0.55 constant:0];
    [self.contentView addConstraint:constraint1];

    NSLayoutConstraint *constraint2 = [NSLayoutConstraint constraintWithItem:self.selectionButton attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationLessThanOrEqual toItem:self.contentView attribute:NSLayoutAttributeWidth multiplier:0.45 constant:0];
    [self.contentView addConstraint:constraint2];

如果你正在做,你的约束在我看来很好:

  • 让你的tableview.rowHeight = UITableViewAutomaticDimension
  • 制作selectionButtontitleLabel允许多行

    self.selectionButton.titleLabel.numberOfLines = 0;
    self.selectionButton.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;