我试图很好地显示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;
这是绘制背景颜色矩形的原始方法.