UITableViewCell 中多个 UIlable 的自动布局

Posted

技术标签:

【中文标题】UITableViewCell 中多个 UIlable 的自动布局【英文标题】:Autolayout of multi UIlables in UITableViewCell 【发布时间】:2015-07-29 15:43:26 【问题描述】:

我想在 ios8 中实现 UITableViewCell 的布局,如下所示:

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

    将每个numberOfLine 设置为0 设置leftLabel1约束:顶部到superview,导致superview,宽度 设置rightLabel1约束:指向leftLabel1,尾随到superview,底部边缘与leftLabel1 设置leftLabel2 约束:从上到左Label1 的底部,对齐leftLabel1 的前缘&& 后缘 设置rightLabel2 约束:引导至leftLabel2,尾随至superview,底部边缘与leftLabel2 设置leftLabel3约束:从上到下leftLabel2,对齐leftLabel1的前导&&后沿 设置rightLabel3约束:前导leftLabel3,尾随superview,底边与leftLabel3

然后是时候设置拥抱和压缩阻力,但我没有添加它并且并非所有标签都能正确显示文本。 谁能详细解释如何实现它?

谢谢!

【问题讨论】:

【参考方案1】:

首先你通过这个方法动态获取每个标签的高度

-(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;

【讨论】:

我知道,但单元格大小不会根据内容高度而变化

以上是关于UITableViewCell 中多个 UIlable 的自动布局的主要内容,如果未能解决你的问题,请参考以下文章

删除其中包含 IBOutlets 的 UITableViewCell

Swift 自定义 UITableViewCell 标签始终为 nil

自动增加/减少 UITableViewCell 中的 UILabelView 高度?

如何使用autolayout在UITableViewCell中分发4个组件?

添加子视图后,UITableViewCell contentView 框架大小会自动增加吗

字体更改时自动uiLabel和uiTableViewCell调整大小的iphone代码?