Macros NSLayoutManager绘图图示符RGLYPHRANGE:atPoint:

Macros NSLayoutManager绘图图示符RGLYPHRANGE:atPoint:,macros,drawing,nstextview,nslayoutmanager,Macros,Drawing,Nstextview,Nslayoutmanager,NSLayoutManager类中的函数drawGlyphsForGlyphRange:atPoint:是如何实现的?我知道它由NSTextView调用,然后依次调用FillBackgroundRectary:count:forCharacterRange:color: 但是它如何确定指定glyph范围的背景色(如果有)?您需要另一个glyph background调用。你可以用 - (void)drawBackgroundForGlyphRange:(NSRange)glyphsToShow

NSLayoutManager类中的函数drawGlyphsForGlyphRange:atPoint:是如何实现的?我知道它由NSTextView调用,然后依次调用FillBackgroundRectary:count:forCharacterRange:color:


但是它如何确定指定glyph范围的背景色(如果有)?

您需要另一个glyph background调用。你可以用

- (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];
            }

我知道,但这个函数显然从未被调用过。所有函数都被重写,并转到super。我从未在iOS上记录对该函数的调用。