iphone - sizeWithFont - 包含 & 字符时的奇怪行为

标签 iphone uitableview uilabel ampersand

每当文本中出现 & 时,获取高度似乎总是会失败。两个函数返回的值都小于实际高度:

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 显示相互重叠的文本。

有趣的是,只要文本不包含任何 & 字符,就会返回相同的高度。

有人可以启发我吗?就我的生活而言,我不明白这里发生了什么,也不知道如何正确解决这个问题。

提前非常感谢。

最佳答案

-textRectForBounds:limitedToNumberOfLines: 不应直接调用(请注意 docs )。所以不一定正确。它还指出“UITableViewCell 对象中的标签大小是根据单元格尺寸确定的,而不是根据请求的大小确定的。”

我怀疑您对 sizeWithFont:constrainedToSize:lineBreakMode: 的调用中的 actualWidth 比您预期的更宽,因此该行实际上并未换行。您如何计算actualWidth

您可能需要将其替换为专门针对您想要执行的操作的 sizeWithFont:forWidth:lineBreakMode: 。也就是说,它可能只是您正在调用的电话的包装。

关于iphone - sizeWithFont - 包含 & 字符时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1306929/

相关文章:

ios - UIWebView 用户代理未正确设置自定义值

iphone - UIViews-masked-off-area-still-touchable

ios - UITextField 不可编辑且不显示键盘

ios - Xcode 在动态 UIImageView 上垂直约束 UILabel

iphone - objective-c 中UITableView中的UILabel

ios - View 的位置低于自调整大小的 UILabel

iphone - 如何为 MKMapView 上的注释移动设置动画

iphone - 覆盖它的 drawRect 时如何显示 UIButton 的标题

ios - UITableViewCell 配件没有被着色

ios - 滚动时 UITableViewCell 图像无法正确显示