このコードをSwift 3.0に書きましたが、drawDorderからneedDisplay = 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
}
}
のようなのViewControllerからpostecです。 –
私はdraw(_ :)を呼び出さないneedDisplay = trueを設定するとdraw(_ :)を呼び出す必要があります。カスタムビューの外側をクリックしてdrawBorderを呼び出すので、私はそれが疑わしいです。 ** override func mouseUp(イベント:NSEvent)から呼び出すと{ drawBorder() } **それは完全に機能します。 – Dawy
私はsetNeedsDisplay(self.bounds)を追加して変更を加えませんでした。 setNeedsDisplay(InvalidRect:NSRect)にはSwift 3の引数が必要です。 – Dawy