【发布时间】:2013-06-13 17:04:38
【问题描述】:
我将如何绘制一个 NSTextView 的文本,使其看起来类似于:http://i.imgur.com/R2yPflH.png
我通常会使用 NSAttributedString,但我无法正确生成圆角笔划。
我有将 NSString 转换为 NSBezierPath 的代码,它可以工作,但我不确定如何在 NSTextView 中绘制它。
提前谢谢你!
【问题讨论】:
标签: objective-c macos cocoa
我将如何绘制一个 NSTextView 的文本,使其看起来类似于:http://i.imgur.com/R2yPflH.png
我通常会使用 NSAttributedString,但我无法正确生成圆角笔划。
我有将 NSString 转换为 NSBezierPath 的代码,它可以工作,但我不确定如何在 NSTextView 中绘制它。
提前谢谢你!
【问题讨论】:
标签: objective-c macos cocoa
对于 NSTextView 中的自定义绘图,您需要继承 NSLayoutManager 并在那里处理绘图。不过,我不认为你想做的事并不容易。过去我将 NSLayoutManager 子类化以在字符后面和字符之间绘制额外的标记,但实际上您需要自己绘制受影响的文本范围,方法是覆盖 -drawGlyphsForGlyphRange:atPoint:。您可以使用传入的范围,使用 -characterRangeForGlyphRange:actualGlyphRange: 将其转换为字符范围,并检查范围中的字符是否是您希望应用自定义绘图的字符。对于这样的范围,您将自己绘制。棘手的部分是确保您的字符串绘制在正确的位置,同时考虑到行间距等。 -lineFragmentRectForGlyphAtIndex:... 和 -locationForGlyphAtIndex: 应该是你的朋友。
【讨论】: