osx – NSAttributedString高亮/背景颜色之间显示行(丑陋)

前端之家收集整理的这篇文章主要介绍了osx – NSAttributedString高亮/背景颜色之间显示行(丑陋)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图很好地显示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];

这种方法基本上起作用,因为它产生突出显示的文本.

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

有人知道在Cocoa这样的突出表现方式吗?下面的图片基本上是我正在寻找的(忽略白盒子上的阴影):

我会愿意使用CoreText,html或任何必要的东西,使事情看起来更好.

解决方法

您将需要对NSLayoutManager进行子类化并覆盖:
- (void)fillBackgroundRectArray:(const CGRect *)rectArray
                      count:(NSUInteger)rectCount
          forCharacterRange:(NSRange)charRange
                      color:(UIColor *)color;

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

猜你在找的HTML相关文章