【发布时间】:2013-09-27 03:43:55
【问题描述】:
我试图在 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 或任何必要的东西来使事情看起来更好。
【问题讨论】:
-
你有没有解决过这个问题,我遇到了完全相同的问题
-
我并没有真正弄清楚这一点,但我确实弄清楚了如何至少将选择矩形围绕文本居中,这样它就不会全部位于上方或下方。它涉及计算
[paragraphStyle setLineSpacing:xx]和[paragraphStyle setLineHeightMultiple:xx]以使它们相同。同样,这并不能解决实际问题,只是让它更容易忍受。
标签: macos cocoa core-text nstextview nsattributedstring