UILabel文本在自定义tableCell中溢出

时间:2011-10-12 04:17:31

标签: objective-c ios

我在自定义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边缘。如果我将单元格滚出视图并再次返回,则恢复正常。我正在将单元格的宽度记录到控制台,这是正确的,但文本远远超过了该宽度。

有什么想法正在加入?

由于

1 个答案:

答案 0 :(得分:0)

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