如何使用 Text Kit 查找单行文本的高度

How to to find the height of a single line of text using Text Kit

我正在尝试使用 Text Kit 查找单行文本的高度。 Calculating Text Height documentation 表示

Note: You don’t need to use this technique to find the height of a single line of text. The NSLayoutManager method defaultLineHeightForFont: returns that value. The default line height is the sum of a font’s tallest ascender, plus the absolute value of its deepest descender, plus its leading.

但是,当我检查 NSLayoutManager Class Reference(并在 Xcode 中进行测试)时,我没有看到 defaultLineHeightForFont: 方法。这是为什么?有其他选择吗?

备注:

更新

在阅读@JoshCaswell 的评论之前,我没有意识到我链接到的文档是针对 OS X 的。我正在 iOS.

中专门寻找如何执行此操作

在 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.
}