【问题标题】:UILabel text overrun in custom tableCell自定义 tableCell 中的 UILabel 文本溢出
【发布时间】:2011-10-12 04:17:30
【问题描述】:

我在自定义 UITableCell 子类中有一个奇怪的问题。这个自定义单元格有一对多行的 UILable,可以包含不同数量的文本(最多 2000 个字符)。自定义 tableCell 有一个布局方法,我使用下面的代码计算框架的高度,同时考虑到设备方向:

if (isPortrait) {
    presentationTextLabelSize = [presentationTextStr sizeWithFont:[UIFont systemFontOfSize:12.0f] constrainedToSize:CGSizeMake(portraitDescriptionWidth, 2000.0f) lineBreakMode:UILineBreakModeWordWrap];
    presentationTextLabelRect = CGRectMake(60.0f, 25.0f, portraitDescriptionWidth, presentationTextLabelSize.height);
} else {
    presentationTextLabelSize = [presentationTextStr sizeWithFont:[UIFont systemFontOfSize:12.0f] constrainedToSize:CGSizeMake(landscapeDescriptionWidth, 2000.0f) lineBreakMode:UILineBreakModeWordWrap];
    presentationTextLabelRect = CGRectMake(60.0f, 25.0f, landscapeDescriptionWidth, presentationTextLabelSize.height);
}

self.presentationTextLabel.frame = presentationTextLabelRect;

我将标签的 autoResizeMask 设置如下:

self.presentationTextLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin;

我在 UITableViewController 中使用相同的计算来设置行高。

一切都完美无缺,标签的大小调整为适合其宽度的高度,并且单元格在设备旋转时自动调整大小,除了当设备旋转为横向时,标签的文本有时会从标签的框架向右延伸,清除 tableView 的边缘。如果我将单元格滚动到视野之外并再次返回,它就会恢复正常。我正在将单元格的宽度记录到控制台,这是正确的,但文本远远超出了该宽度。

有什么想法吗?

谢谢

【问题讨论】:

  • 这可能与缓存表中的UITableViewCell 实例有关。可能有更好的解决方案;但是您可以发送UITableViewreloadData 有关设备旋转的消息吗?

标签: objective-c ios


【解决方案1】:

问题是,当设备旋转到横向时,tableView 不会重新加载。因此,更新文本时存在不匹配。在您发现设备已更改为横向模式的地方使用[tableView reloadData];

【讨论】:

  • 这个答案让我走上了正轨,尽管它比重新加载表数据更复杂。我必须在自定义 tableViewCell 中为所有可见单元格进行自定义重新布局,并且还更改了设置自定义单元格 textField 宽度的方式。我最终使用 contentView 的边界来准确设置 textField 宽度。
猜你喜欢
  • 2021-01-11
  • 2023-04-03
  • 2014-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
相关资源
最近更新 更多