绘制NSTextView的自定义插入点时出现毛刺

时间:2016-06-22 02:53:53

标签: xcode swift macos cocoa nstextview

我的问题不同,因为我移动它时插入点没有转向默认表示。当我的文档为空时,我有一个视觉问题。但是当文档不为空时,插入点看起来很好。

我试图绘制NSTextView子类的自定义插入点。一切正常......除了第一次发布文件。创建新文档时,插入点的第一次闪烁总是很奇怪。但在那之后,第一次闪烁一切都变得正常了。在哪里我要看?

override func drawInsertionPoint(in rect: NSRect, color: NSColor, turnedOn flag: Bool) {
    var customRect = rect
    customRect.size.width = 2.0

    if flag {
        color.set()
    }
    else {
        self.backgroundColor.set()
    }

    self.lockFocus()
    let path = NSBezierPath(rect:customRect)
    path.setClip()
    path.fill()
    self.unlockFocus()

    self.setNeedsDisplay(customRect, avoidAdditionalLayout: false)
}

这就是它在第一次闪烁时的样子:enter image description here

更新。删除setNeedsDisplay调用会在文档为空时始终显示毛刺。调用setNeedsDisplay会在第一次闪烁时使空文档出现故障。

我发现的另一件事是毛刺只是插入点默认表示的路径。不知何故,当文档为空时它会显示出来。不要理解为什么会发生这种情况。

0 个答案:

没有答案