在NStextField中绘图

时间:2009-11-22 01:22:30

标签: cocoa substring highlighting nsview nstextfield

如果您想在屏幕截图(Tweetie.app)中为NSTextField中的特定子字符串实现突出显示,您会怎么做? :) Tweetie Link Highlighting http://qkpic.com/88c61

感谢您的帮助!

2 个答案:

答案 0 :(得分:6)

对于NSTextField,请注意它是执行绘图的NSTextFieldCell。你想要覆盖-drawInteriorWithFrame:inView:并自己做字符串绘制。挑战在于找到绘制子串的矩形(如果包裹范围,则多于一个)。您最终将不得不使用NSLayoutManager和NSTextStorage容器。

最好使用NSTextView。相关的NSLayoutManager和NSTextStorage组件已经预先组装,您可以免费获得许多其他功能。最重要的是,有一个方便的 - [NSTextView drawViewBackgroundInRect:]方法,所以你不必子类化任何东西。您只需询问文本视图的布局管理器和文本存储,然后询问它是否为给定范围的矩形。有关详细信息,请参阅Text System Overview和链接的文档。

要有效地找到有趣的子字符串,您可以使用custom attributes(或内置的子字符串,例如NSLinkAttributeName)作为您感兴趣的范围。

答案 1 :(得分:0)

另一种考虑因素是可编辑的WebView,您可以使用CSS构建自定义属性。