gpt4 book ai didi

swift - 为什么我的 NSView 在点击时不绘制内容?

转载 作者:行者123 更新时间:2023-11-28 10:23:55 26 4
gpt4 key购买 nike

在我制作的自定义 NSView 上,我以这种方式覆盖了 mouseDown 方法:

override func mouseDown(theEvent: NSEvent) {
let location = self.convertPoint(theEvent.locationInWindow, fromView: nil)
NSColor.blackColor().set()
let basisRect = CGRect(origin: location, size: CGSize(width: 10, height: 10))
let roundPath = NSBezierPath(ovalInRect: basisRect)
roundPath.fill()
needsDisplay = true
}

但是当我点击 时我没有绘制任何东西(即使在我使用 println() 检查时触发了 mouseDown 方法)

您知道为什么没有任何反应以及如何解决吗?

编辑(这是我的 drawRect 函数):

  override func drawRect(dirtyRect: NSRect) {
super.drawRect(dirtyRect)
NSColor.blackColor().set()
let middlePoint = (self.bounds.size.width/2)
let basisRect = CGRect(origin: CGPoint(x: middlePoint-5, y: 10), size: CGSize(width: 10, height: 10))
let roundPath = NSBezierPath(ovalInRect: basisRect)
roundPath.fill()

let bottomLegPath = NSBezierPath()
bottomLegPath.moveToPoint(CGPoint(x: middlePoint, y: 10))
bottomLegPath.lineToPoint(CGPoint(x: middlePoint, y: middlePoint))
bottomLegPath.lineWidth = 5
bottomLegPath.stroke()

}

谢谢。

最佳答案

NSView 通过调用drawRect: 进行绘制。只有 drawRect: 中的内容才重要。您没有显示您的 drawRect: 代码,但我敢打赌您没有。这是您需要绘制圆形路径的地方,而不是在 mouseDown 实现中。

关于swift - 为什么我的 NSView 在点击时不绘制内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30383130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com