gpt4 book ai didi

macos - NSAttributedString 高亮/背景颜色显示在行之间(丑陋)

转载 作者:行者123 更新时间:2023-12-03 16:03:08 27 4
gpt4 key购买 nike

我试图很好地显示 NSTextView 中突出显示的段落。现在,我通过创建一个带有背景颜色的 NSAttributedString 来做到这一点。这是一些简化的代码:

NSDictionary *attributes = @{NSBackgroundColorAttributeName:NSColor.greenColor};
NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:@"Here is a single line of text with single spacing" attributes:attributes];

[textView.textStorage setAttributedString:attrString];

这种方法基本上有效,因为它会生成突出显示的文本。

Single line single spaced

不幸的是,当存在多条线时,除了线本身之外,突出显示还覆盖了线之间的垂直空间,导致丑陋。

Multi line double spaced text

有谁知道在 Cocoa 中进行这种突出显示的方法吗?下图基本上就是我要找的(忽略白框上的阴影):

whiteout text

我愿意使用 CoreText、html 或任何使事情看起来更好的必要内容。

最佳答案

您需要继承 NSLayoutManager 并覆盖:

- (void)fillBackgroundRectArray:(const CGRect *)rectArray
count:(NSUInteger)rectCount
forCharacterRange:(NSRange)charRange
color:(UIColor *)color;

这是绘制背景颜色矩形的原始方法。

关于macos - NSAttributedString 高亮/背景颜色显示在行之间(丑陋),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18939025/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com