0

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

谢谢你的帮助!

4

2 回答 2

6

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

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

为了有效地找到有趣的子字符串,您可以为您感兴趣的范围使用自定义属性(或内置属性,例如 NSLinkAttributeName)。

于 2009-11-22T01:37:53.437 回答
0

可以考虑的替代方法是可编辑的 WebView,您可以在其中使用 CSS 构建自定义属性。

于 2009-11-22T14:39:24.840 回答