如何为 NSAttributedString 中的文本设置“隐藏”属性?

dub*_*bek 3 cocoa objective-c nsattributedstring

我有一个带有NSTextView控件的 Cocoa 应用程序,该控件将其文本保存在一个NSAttributedString(实际上我相信它是一个NSMutableAttributedString)中。我可以轻松地在该字符串内的不同字符范围内设置和修改不同的文本属性(例如字体、下划线等)。

但是,我想将文本的一部分设置为隐藏(类似于 CSS 属性的效果display: none)。当外部事件发生时(比如单击按钮),我想取消隐藏或隐藏该特定范围的字符。

有没有办法做到这一点NSAttributedString

Nik*_*uhe 5

NSAttributedString 支持的属性列在 AppKit 的 NSAttributedString.h 标头中。没有像“隐藏”或“可见”这样的键。属性(样式)不是从 html 派生的,不能表达所有的 css 特性。

不过,要隐藏一系列字符,您可以将前景色设置为透明:

NSMutableAttributedString* myString;

[myString addAttribute:NSForegroundColorAttributeName
                 value:[NSColor clearColor]
                 range:NSMakeRange(0, 10)];
Run Code Online (Sandbox Code Playgroud)


小智 5

一个简单的选项是将隐藏文本的字体大小设置为 0

  • `0.0` 无效,但是 `NSFont.systemFont(ofSize: 0.1)` 使文本消失。你甚至不需要透明的颜色。 (2认同)