2016-01-22 2 views
1

У меня есть пользовательская ячейка, в которой есть UILabel, UIButton и UIImageView.Увеличьте высоту пользовательской кнопки ячейки с помощью автоматической компоновки (VFL)

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

Ваши ограничения выглядит хорошо для меня, если вы делаете:

  • делая ваш tableview.rowHeight = UITableViewAutomaticDimension
  • делает selectionButtontitleLabel позволяет несколько линий

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

Ваше решение работает. Я отредактировал ответ, чтобы удалить предупреждение об амортизации. – Kampai

Смежные вопросы