Uitableview ios8自动布局:两个多行(可能为0行)标签
我想在一个单元格中显示两个UILabel(标题、副标题)。Uitableview ios8自动布局:两个多行(可能为0行)标签,uitableview,ios8,autolayout,Uitableview,Ios8,Autolayout,我想在一个单元格中显示两个UILabel(标题、副标题)。 标题:多行0 对子标题:0≤多行≤2 这里有一个bug(比如,标题和副标题都是两行,单元格的indexath.row=1): 第一次运行模拟器时,标题仅显示1行,副标题显示2行。在我滚动tableView并返回到第一个indexPath.row之后,它显示正确!看起来是这样的: 第一次: ----------------- 这是互动程序,它应该显示… 这是副标题,应该显示 两排 ----------------- 滚动并返回到此单元格
标题:多行0
对子标题:0≤多行≤2
这里有一个bug(比如,标题和副标题都是两行,单元格的indexath.row=1):
第一次运行模拟器时,标题仅显示1行,副标题显示2行。在我滚动tableView并返回到第一个indexPath.row之后,它显示正确!看起来是这样的:
第一次:
-----------------
这是互动程序,它应该显示…
这是副标题,应该显示
两排
-----------------
滚动并返回到此单元格后:
-----------------
这是标题,应该显示
两行。
这是副标题,应该显示
两排
----------------- 我所做的:
在控制器中:
tableView.estimatdRowHeight=79
tableView.rowHeight=uitableview自动标注
故事板中:
标题:
这几天我对这个错误感到困惑,有什么办法解决这个问题吗?非常感谢!!!(很抱歉缺少图像,因为我没有获得足够的声誉>从故事板加载的单元格的初始宽度不正确 这就是为什么第一次标签大小不正确,但在您(重新加载数据或)将单元格从屏幕上滚动到屏幕上后,标签会正确显示的原因 由于单元格宽度最初不正确,标签最终使用的
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的,还有他的。这就是当我遇到你遇到的同样问题时,给我提供解决方案的线索