0

好吧,这听起来很奇怪,我在过去的 3 个小时里一直在尝试修复它。我有一个包含两个标签的自定义单元格的表格视图。标签高度是变量,使用方法计算sizeWithFont:constrainedToSize:lineBreakMode

cell = [tableView dequeueReusableCellWithIdentifier:sCellIdentifier];

cell.selectionStyle = UITableViewCellSelectionStyleNone;

cell.tariffPlanCellContentView.cellPrefixLabel.text = [NSString stringWithFormat:sPrefixStringWithColon, [self getPrefixStringAtIndexPath:indexPath]];
cell.tariffPlanCellContentView.cellPrefixLabel.textAlignment = UITextAlignmentLeft;
cell.tariffPlanCellContentView.cellPrefixLabel.frame = CGRectMake(cell.tariffPlanCellContentView.cellPrefixLabel.frame.origin.x,
                                                                  cell.tariffPlanCellContentView.cellPrefixLabel.frame.origin.y,
                                                                  kTableViewCellLabelWidth,
                                                                  [self getSizeForPrefixStringAtIndexPath:indexPath].height);

cell.tariffPlanCellContentView.cellDetailsLabel.text = [self getDetailStringAtIndexPath:indexPath];
cell.tariffPlanCellContentView.cellDetailsLabel.frame = CGRectMake(cell.tariffPlanCellContentView.cellDetailsLabel.frame.origin.x,
                                                                   cell.tariffPlanCellContentView.cellPrefixLabel.frame.origin.y + cell.tariffPlanCellContentView.cellPrefixLabel.frame.size.height + 3,
                                                                   kTableViewCellLabelWidth,
                                                                   [self getSizeForDetailsStringAtIndexPath:indexPath].height);

[cell.tariffPlanCellContentView.cellPrefixLabel sizeToFit];
[cell.tariffPlanCellContentView.cellDetailsLabel sizeToFit];

在第一次加载表格视图时,所有单元格仅显示一行。只有当我滚动表格视图(或以编程方式“再次”重新加载表格视图)时,标签才是固定的!我不知道它为什么这样做?cellPrefixLabel并且cellDetailsLabel位于从 nib 加载的自定义单元格内。都有numberOfLines = 0

更新

  1. 我没有使用自动布局,我仍然支持 iOS 5。
  2. 该应用程序在 iOS 6 上运行良好,该错误仅在 iOS 7 beta 6 上!是因为beta版本吗?有没有人面临这样的事情?
  3. 我删除了 sizeToFit 并且存在同样的问题。事实上,sizeToFit 根本没有帮助,iOS 6 也不需要它。
4

3 回答 3

1

将所有 UITableviewcell 添加代码移动到委托方法并试一试

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
于 2013-09-09T19:46:32.627 回答
0

你在使用自动布局吗?如果是这样,那么您可能不应该调用 sizeToFit。标签的大小可以从它的 intrinsicContentSize 推断出来,它会在文本设置后更新。

请在此处查看我的答案以获取更多见解。

于 2013-09-09T19:29:23.027 回答
0

好吧,我终于知道为什么了。它实际上是一个错误(或者这就是它的外观)。方法 sizeWithFont... 与 iOS 7 新字体文本样式之一一起使用。似乎这种方法不能正确计算这种新字体。希望明天的 GM 能修复这个错误。如果没有,我必须通过在高度上增加大约 10 个点来使用解决方法。

这与重新加载固定高度有什么关系(如果使用 sizeToFit),我真的不知道。全新的动态字体系统似乎很脆弱。

于 2013-09-09T20:47:24.480 回答