在NSTextView中自定义文本样式绘图

时间:2013-06-13 17:04:38

标签: objective-c macos cocoa

我如何绘制NSTextView的文字看起来类似于:http://i.imgur.com/R2yPflH.png

我通常会使用NSAttributedString,但我无法正确生成圆形笔划。

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

提前谢谢!

1 个答案:

答案 0 :(得分:1)

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