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

时间:2016-01-22 11:27:17

标签: ios objective-c uitableview autolayout custom-cell

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

enter image description here

您可以看到第三行右侧(按钮控件 - 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];

1 个答案:

答案 0 :(得分:1)

如果你正在做的话,你的约束对我来说很好:

  • 制作tableview.rowHeight = UITableViewAutomaticDimension
  • 使selectionButton titleLabel允许多行

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