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

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

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

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

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

谢谢!

【问题讨论】:

    标签: ios uitableview autolayout uilabel


    【解决方案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;
    

    【讨论】:

    • 我知道,但单元格大小不会根据内容高度而变化
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多