在UITableViewCell中自动执行多个UIlables

时间:2015-07-29 15:43:27

标签: ios uitableview autolayout uilabel

我想在iOS8中实现UITableViewCell的布局,如下所示:
enter image description here

关键是每个标签可以是 多行 。我知道它需要一个正确的拥抱/压缩配置,但我不知道如何设置它 我设置了以下约束:

  1. 将每个numberOfLine设置为0
  2. 设置leftLabel1约束:top to superview,导致superview,width
  3. 设置rightLabel1约束:导致leftLabel1,尾随到superview,底边与leftLabel1
  4. 设置leftLabel2约束:从左到右标签1的底部,对齐前导&& leftLabel1的尾随边缘
  5. 设置rightLabel2约束:导致leftLabel2,尾随到superview,底边与leftLabel2
  6. 设置leftLabel3约束:从左到右标签2的底部,对齐前导&& leftLabel1的尾随边缘
  7. 设置rightLabel3约束:导致leftLabel3,尾随到superview,底边与leftLabel3
  8. 然后是时候设置拥抱和抗压力,但我没有添加它,并且并非所有标签都能正确显示文字。
    任何人都可以详细解释如何实现它?

    谢谢!

1 个答案:

答案 0 :(得分:0)

首先,您可以通过此方法动态获取每个标签高度

-(CGFloat)heightForCellText:(NSString *)text withWidth:(CGFloat)width
{
    UILabel *lbl=[[UILabel alloc]initWithFrame:CGRectMake(0, 0,width,CGFLOAT_MAX)];
    lbl.numberOfLines = 0;
    lbl.lineBreakMode =NSLineBreakByWordWrapping;
    lbl.font = [UIFont fontWithName:@"Helvetica Neue" size:14.0];
    lbl.text = text;
    [lbl sizeToFit];
    return lbl.frame.size.height;
}

并像这样设置表格单元格高度

 return [self heightForCellText:leftLabel withWidth:leftLabel.size.width] + Defult_Cell_Height;