如果您想在屏幕截图(Tweetie.app)中为NSTextField
中的特定子字符串实现突出显示,您会怎么做? :)
Tweetie Link Highlighting http://qkpic.com/88c61
感谢您的帮助!
答案 0 :(得分:6)
对于NSTextField,请注意它是执行绘图的NSTextFieldCell。你想要覆盖-drawInteriorWithFrame:inView:并自己做字符串绘制。挑战在于找到绘制子串的矩形(如果包裹范围,则多于一个)。您最终将不得不使用NSLayoutManager和NSTextStorage容器。
最好使用NSTextView。相关的NSLayoutManager和NSTextStorage组件已经预先组装,您可以免费获得许多其他功能。最重要的是,有一个方便的 - [NSTextView drawViewBackgroundInRect:]方法,所以你不必子类化任何东西。您只需询问文本视图的布局管理器和文本存储,然后询问它是否为给定范围的矩形。有关详细信息,请参阅Text System Overview和链接的文档。
要有效地找到有趣的子字符串,您可以使用custom attributes(或内置的子字符串,例如NSLinkAttributeName)作为您感兴趣的范围。
答案 1 :(得分:0)
另一种考虑因素是可编辑的WebView,您可以使用CSS构建自定义属性。