iOS 使用 boundingRect 计算 UILabel 的高度不准确的问题

19-09-04 12:03 字数 489 阅读 4044 已编辑

写了个cell,需要返回label的高度,但是使用 boundingRect 方法计算,一直都显示不全被折叠,计算方法如下

let titleHeight = model.title?.boundingRect(with: textMaxSize, options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font: font], context: nil).height

然后网上搜到说是因为中文标点导致的计算不准,推荐使用 sizeThatFits 方法

let label = UILabel()
label.font = font
label.numberOfLines = 0
label.text = model.content
let contentHeight = label.sizeThatFits(CGSize(width: CGFloat(ScreenWidth - 2 * mainMargin - 45), height: maxContentHeight)).height

然并卵,后来打印高度,发现都是浮点数,后来使用 ceil 方法进一取整后问题解决。

0人点赞>
关注 收藏 改进 举报
0 条评论
排序方式 时间 投票
快来抢占一楼吧
请登录后发表评论
站长 @ 十七度
文章
381
粉丝
23
喜欢
191
收藏
31
排名 : 1
访问 : 130.32万
私信