每当一个&在文本中出现,高度似乎一直在关闭。两个函数的返回值都小于实际高度:
CGSize labelSize = [nameLabel.text sizeWithFont:nameLabel.font constrainedToSize: CGSizeMake( actualWidth, MAXFLOAT ) lineBreakMode:UILineBreakModeWordWrap];
CGRect textSize = CGRectMake(0.0, 0.0, 320.0, FLT_MAX);
nameLabel.frame = [nameLabel textRectForBounds:textSize limitedToNumberOfLines:0];
虽然使用textRectForBounds的第二种方法返回的实际高度更接近,但它们都不会返回正确的高度。前者将返回240但后者将返回700.实际值为750。
这会弄乱我的UITableView,显示彼此重叠的文本。
有趣的是,只要文本不包含任何&amp ;,就会返回相同的高度。字符。
有人可以告诉我,至于我的生活,我不明白这里发生了什么,知道如何正确解决这个问题。
非常感谢。
答案 0 :(得分:2)
-textRectForBounds:limitedToNumberOfLines:
(请注意docs)。所以不确定是否正确。它还指出“UITableViewCell对象中的标签的大小基于单元格尺寸,而不是请求的大小。”
我怀疑您对actualWidth
的调用sizeWithFont:constrainedToSize:lineBreakMode:
比您预期的要宽,这样该行实际上并没有包裹。你是如何计算actualWidth
的?
您可能希望将sizeWithFont:forWidth:lineBreakMode:
替换为专门针对您尝试执行的操作。也就是说,它可能只是你正在进行的通话的包装。
答案 1 :(得分:1)
我遇到了同样的问题。我最终逃脱了&性格并将其改为&一切都很好。 UILabel非常聪明,可以显示逃脱的&正确地计算了尺寸。