iphone - 找出带有矩形字体的字符串的行数?

标签 iphone objective-c ios uitextview

我想知道当设置为矩形内的字体时,字符串会有多少行。有办法做到这一点吗?

我有这段代码,但我试图让它处理得更快一点,因为它在 ScrollView 中被大量使用:

CGSize maximumSize = CGSizeMake(MESSAGE_FRAME.size.width - 16, 1000000);

    CGSize expectedSize = [message sizeWithFont:[UIFont fontWithName:@"Crimson" size:15]
                              constrainedToSize:maximumSize
                                  lineBreakMode:UILineBreakModeWordWrap];

return expectedSize.height;

我知道这会返回行高:

NSLog(@"%f", [[UIFont fontWithName:@"Crimson" size:15] lineHeight]);

因此,如果我可以将其乘以另一个值,它可能会更快。

最佳答案

我想不出替代方案,而且我怀疑是否有一种方案效率更高(毕竟,有什么可能的魔法可以达到行数并避免自动换行计算?)。

无论如何,考虑一下是否需要在 View 滚动时一遍又一遍地完成计算,而不是伤害我们的大脑来减少计算周期。我的猜测是否定的。

我认为加快速度的方法是进行传统的大小计算并缓存结果。

关于iphone - 找出带有矩形字体的字符串的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10638131/

相关文章:

iphone - 关于 iPhone/iPad 重新构建行为的非常棘手的问题

ios - UITableView从UISearchBar更新结果

ios - 无法理解@encode和objCType

iphone - 在 iPhone 上调用电话的正确 URL 是什么?

iphone - 隐式转换将 64 位缩短为 32 位

ios - Wi-Fi 直连和 iOS 支持

ios - 如何禁止WKWebView的水平弹跳?

ios - 以正确的方式读取和写入 Firebase 规则

ios - 带有 UIView 子类的惰性属性

android - NoSuchMethodError : The method 'map' was called on null. flutter