Objective c NSTextView中的自定义文字样式图形

Objective c NSTextView中的自定义文字样式图形,objective-c,macos,cocoa,Objective C,Macos,Cocoa,如何绘制NSTextView的文本,使其看起来类似于: 我通常会使用NSAttributed字符串,但我无法正确生成圆角笔划 我有将NSString转换为NSBezierPath的代码,但我不确定如何在NSTextView中绘制它 提前谢谢你 对于NSTextView中的自定义图形,需要将NSLayoutManager子类化并在其中处理图形。不过,我认为你想做的事情并不容易。过去,我对NSLayoutManager进行了子类化,以便在字符后面和字符之间绘制额外的标记,但实际上您需要自己绘制受影响

如何绘制NSTextView的文本,使其看起来类似于:

我通常会使用NSAttributed字符串,但我无法正确生成圆角笔划

我有将NSString转换为NSBezierPath的代码,但我不确定如何在NSTextView中绘制它


提前谢谢你

对于NSTextView中的自定义图形,需要将NSLayoutManager子类化并在其中处理图形。不过,我认为你想做的事情并不容易。过去,我对NSLayoutManager进行了子类化,以便在字符后面和字符之间绘制额外的标记,但实际上您需要自己绘制受影响的文本范围,方法是覆盖-drawGlyphsForGlyphRange:atPoint:。您可以使用传入的范围,使用-characterRangeForGlyphRange:actualGlyphRange:,将其转换为字符范围,并检查该范围内的字符是否为要应用自定义图形的字符。对于这些范围,您将自己绘制。棘手的部分将是确保您的字符串绘制在正确的位置,考虑到行距等因素-lineFragmentRectForGlyphAtIndex:。。。和-locationForGlyphAtIndex:应该是您在这里的朋友。

对于NSTextView中的自定义绘图,您需要在NSLayoutManager中创建子类并在那里处理绘图。不过,我认为你想做的事情并不容易。过去,我对NSLayoutManager进行了子类化,以便在字符后面和字符之间绘制额外的标记,但实际上您需要自己绘制受影响的文本范围,方法是覆盖-drawGlyphsForGlyphRange:atPoint:。您可以使用传入的范围,使用-characterRangeForGlyphRange:actualGlyphRange:,将其转换为字符范围,并检查该范围内的字符是否为要应用自定义图形的字符。对于这些范围,您将自己绘制。棘手的部分将是确保您的字符串绘制在正确的位置,考虑到行距等因素-lineFragmentRectForGlyphAtIndex:。。。应该是你在这里的朋友