在我为Mac OSX构建的产品中,我需要支持10.5,10.6和10.7。 我使用NSTextView作为编辑器。我用它来显示文字和图像。我要求突出显示。这必须与MS Word完全一样。在MS Word中,您可以选择一个范围并将其更改为黄色。
我使用setMarkedTextAttributes做了同样的事情:但这不适用于内嵌图像。所以我尝试使用LayoutManager并设置背景颜色,但它似乎也没有工作。
关于突出显示的另外一点是切换,所以如果我选择相同范围的文本并再次突出显示它,它应该不会突出显示。为此,我将所有NSRange存储在一个列表中,并检查它是否已突出显示。我觉得我做错了什么。所以我试图获得NSRect然后应用颜色可能是?。
答案 0 :(得分:3)
在NSAttributedString:
中设置该范围的背景颜色NSMutableAttributedString *mattrstg = [textView textStorage];
[mattrstg addAttribute:NSBackgroundColorAttributeName value:colorHighlighter range:range];
现有属性将是您已突出显示内容的记录。所以,要切换你可以做的亮点
[mattrstg enumerateAttribute:NSBackgroundColorAttributeName
inRange:rangeToChange
options:0 usingBlock:^(id value, NSRange range, BOOL *stop) {
if (value) {
[mattrstg removeAttribute:NSBackgroundColorAttributeName range:range];
} else {
[mattrstg addAttribute:NSBackgroundColorAttributeName value:colorHighlighter range:range];
}
}];