1
我在Swift 3.0中編寫了這段代碼,但draw方法不是從func drawBorder調用的needsDisplay = true;通過在另一個視圖中單擊按鈕調用drawBorder。 感謝您的任何提示。func draw(_ dirtyRect:NSRect)不叫
class clsDrawView: NSView {
private var redraw = false
var border = NSBezierPath()
var color = NSColor()
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
// Drawing code here.
if redraw {
color.setStroke()
border.stroke()
}
}
func drawBorder() {
redraw = true
color = NSColor.blue
border.lineWidth = CGFloat(10)
border.move(to: NSPoint(x: 20, y: 20))
border.line(to: NSPoint(x: 50, y: 50))
needsDisplay = true
}
}
而是在drawBorder方法needsDisplay財產嘗試調用setNeedsDisplay()的。 –
我不叫draw(_ :)我只是設置needsDisplay = true,它應該確保調用draw(_ :)。我懷疑這是因爲我通過在自定義視圖外點擊按鈕來調用drawBorder。如果我從**覆蓋func mouseUp(事件:NSEvent)調用它{ drawBorder() } **,那麼它可以很好地工作。 – Dawy
我增加了setNeedsDisplay(self.bounds)並且沒有改變。請注意,setNeedsDisplay(InvalidRect:NSRect)需要參數Swift 3 – Dawy