我正在尝试使用Text Kit查找单行文本的高度。 Calculating Text Height documentation说
注意:您无需使用此技术来查找单行文本的高度。
NSLayoutManager
方法defaultLineHeightForFont:
返回该值。默认行 height是字体最高的上升者加上绝对值的总和 它最深的下降的价值加上它的领先。
然而,当我检查NSLayoutManager Class Reference(并且还在Xcode中测试)时,我没有看到defaultLineHeightForFont:
方法。这是为什么?还有其他选择吗?
备注:
更新
我没有意识到我链接的文档是针对OS X的,直到我阅读@JoshCaswell的评论。我特意在iOS中寻找如何做到这一点。
答案 0 :(得分:2)
在TextKit中,您可以使用布局管理器来获取行高
- lineFragmentRectForGlyphAtIndex:effectiveRange:
。正如您从该函数的名称中注意到的那样,它被命名为" line fragment"。为什么?因为并不总是你的布局有一个完整的行,而是你可能有一个排除路径(包含一个形状或图像),文本围绕它。在这种情况下,您将拥有文本布局的部分行(行片段)。
在布局管理器的委托中,您将实现一个可能如下所示的函数:
-(void)layoutManager:(NSLayoutManager *)layoutManager didCompleteLayoutForTextContainer:(NSTextContainer *)textContainer atEnd:(BOOL)layoutFinishedFlag{
//This is only for first Glyph
CGRect lineFragmentRect = [layoutManager lineFragmentUsedRectForGlyphAtIndex:0 effectiveRange:nil];
// The height of this rect is the line height.
}