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个组件?