関数 drawGlyphsForGlyphRange:atPoint: はクラス NSLayoutManager でどのように実装されていますか? 私はそれが NSTextView によって呼び出され、次に fillBackgroundRectArray:count:forCharacterRange:color: を呼び出すことを知っています:
しかし、指定されたグリフレンジの背景色があれば、どのように決定するのでしょうか?
関数 drawGlyphsForGlyphRange:atPoint: はクラス NSLayoutManager でどのように実装されていますか? 私はそれが NSTextView によって呼び出され、次に fillBackgroundRectArray:count:forCharacterRange:color: を呼び出すことを知っています:
しかし、指定されたグリフレンジの背景色があれば、どのように決定するのでしょうか?
グリフ背景の別の呼び出しがあります。使用できます
- (void)drawBackgroundForGlyphRange:(NSRange)glyphsToShow atPoint:(CGPoint)origin;
アップデート:
私は UIView の drawRect でこのように使用します。
NSRange glyphRange = [layoutManager glyphRangeForTextContainer:textContainer];
if (glyphRange.location != NSNotFound)
{
[layoutManager drawBackgroundForGlyphRange:glyphRange atPoint:label.frame.origin];
[layoutManager drawGlyphsForGlyphRange:glyphRange atPoint:label.frame.origin];
}