Uitableview ios8自动布局:两个多行(可能为0行)标签

Uitableview ios8自动布局:两个多行(可能为0行)标签,uitableview,ios8,autolayout,Uitableview,Ios8,Autolayout,我想在一个单元格中显示两个UILabel(标题、副标题)。 标题:多行0 对子标题:0≤多行≤2 这里有一个bug(比如,标题和副标题都是两行,单元格的indexath.row=1): 第一次运行模拟器时,标题仅显示1行,副标题显示2行。在我滚动tableView并返回到第一个indexPath.row之后,它显示正确!看起来是这样的: 第一次: ----------------- 这是互动程序,它应该显示… 这是副标题,应该显示 两排 ----------------- 滚动并返回到此单元格

我想在一个单元格中显示两个UILabel(标题、副标题)。
标题:多行0
对子标题:0多行2

这里有一个bug(比如,标题和副标题都是两行,单元格的indexath.row=1):
第一次运行模拟器时,标题仅显示1行,副标题显示2行。在我滚动tableView并返回到第一个indexPath.row之后,它显示正确!看起来是这样的:

第一次:
-----------------
这是互动程序,它应该显示…

这是副标题,应该显示
两排
-----------------

滚动并返回到此单元格后:
-----------------
这是标题,应该显示
两行。

这是副标题,应该显示
两排
-----------------

我所做的:
在控制器中:
tableView.estimatdRowHeight=79

tableView.rowHeight=uitableview自动标注


故事板中:
标题:

  • 将空间引入superview
  • 到superview的尾随空间
  • 顶部空间到Superview
  • 与字幕对齐
  • 将尾随与副标题对齐
  • 字幕的底部空间
  • 字幕:

  • 超级视图的底部空间
  • 与标题对齐
  • 将尾随与标题对齐
  • 标题的顶部空间

  • 这几天我对这个错误感到困惑,有什么办法解决这个问题吗?非常感谢!!!(很抱歉缺少图像,因为我没有获得足够的声誉>从故事板加载的单元格的初始宽度不正确

    这就是为什么第一次标签大小不正确,但在您(重新加载数据或)将单元格从屏幕上滚动到屏幕上后,标签会正确显示的原因

    由于单元格宽度最初不正确,标签最终使用的
    preferredMaxLayoutWidth
    比表宽(标签认为它有更多空间将所有内容放在一行中)

    对我有效的解决方案是确保我的(子类)单元格的宽度与tableView的宽度匹配:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    
        [cell adjustSizeToMatchWidth:CGRectGetWidth(self.tableView.frame)];
    
        [self configureCell:cell forRowAtIndexPath:indexPath];
    
        [cell setNeedsUpdateConstraints];
        [cell updateConstraintsIfNeeded];
    
        return cell;
    }
    
    在TableViewCell.m中:

    - (void)adjustSizeToMatchWidth:(CGFloat)width
    {
        // Workaround for visible cells not laid out properly since their layout was
        // based on a different (initial) width from the tableView.
    
        CGRect rect = self.frame;
        rect.size.width = width;
        self.frame = rect;
    
        // Workaround for initial cell height less than auto layout required height.
    
        rect = self.contentView.bounds;
        rect.size.height = 99999.0;
        rect.size.width = 99999.0;
        self.contentView.bounds = rect;
    }
    
    我还建议你去看看smileyborg的,还有他的。这就是当我遇到你遇到的同样问题时,给我提供解决方案的线索