如何在NSTextView中正确设置关于字符的roundRect backgroundColor?

时间:2018-05-06 08:07:14

标签: ios uitextview nstextview core-text textkit

我想为NSTextView中的重要字符设置roundRect backgroundColor。属性是“标签”。我重写了** NSLayoutManager **的func fillBackgroundRectArray(_:count:forCharacterRange:color:)。代码如下:

    override func fillBackgroundRectArray(_ rectArray: UnsafePointer<NSRect>, count rectCount: Int, forCharacterRange charRange: NSRange, color: NSColor) {

    var effectiveRange = NSMakeRange(0, 0)
    let attributes = self.textStorage?.attributes(at: charRange.location, effectiveRange: &effectiveRange)
    if attributes?.index(forKey: NSAttributedStringKey(rawValue: "tag")) != nil {
        let bezierPath = NSBezierPath(roundedRect: rectArray[0], xRadius: 8, yRadius: 8)
        bezierPath.fill()
    } else {
        super.fillBackgroundRectArray(rectArray, count: rectCount, forCharacterRange: charRange, color: color)
    }
}

效果是:

enter image description here

但是当我编辑标签(“恐慌”到“paniddc”)“恐慌”时,效果不是我的愿望。效果是:

enter image description here

我希望效果如下: enter image description here

我想知道为什么?当我编辑标签时,我该怎么做才能完成最后一个效果?

我的项目在这里:github

0 个答案:

没有答案