我在自定义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边缘。如果我将单元格滚出视图并再次返回,则恢复正常。我正在将单元格的宽度记录到控制台,这是正确的,但文本远远超过了该宽度。
有什么想法正在加入?
由于
答案 0 :(得分:0)
问题是,当设备旋转到横向时,tableView
不会重新加载。因此,更新文本存在不匹配。在您发现设备已更改为横向模式的位置使用[tableView reloadData];
。