【发布时间】: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实例有关。可能有更好的解决方案;但是您可以发送UITableView和reloadData有关设备旋转的消息吗?
标签: objective-c ios