Я написал этот код в Swift 3.0, но метод draw не вызывается из func drawBorder by 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
}
}
Вместо needsDisplay собственности попытка вызова setNeedsDisplay() в методе drawBorder. –
Я не назову ничью (_ :) Я просто установил needsDisplay = true, который должен обеспечить вызов draw (_ :). У меня есть подозрение, что это потому, что я вызываю drawBorder нажатием кнопки за пределами пользовательского представления. Если я назову это из ** переопределить func mouseUp (с событием: NSEvent) { drawBorder() } **, то он отлично работает. – Dawy
Я добавил setNeedsDisplay (self.bounds) и без изменений. Обратите внимание, что setNeedsDisplay (InvalidRect: NSRect) нужен аргумент в Swift 3 – Dawy