У меня есть NSView
, подключенный к пользовательскому классу.
Там какая-то рисунок на этой точке зрения:Ясный NSView программно в быстром
class LineDrawer: NSView {
var linear = NSBezierPath()
var storage = NSUserDefaults.standardUserDefaults()
override func drawRect(dirtyRect: NSRect) {
var color = NSColor()
if let newLoadedData = storage.objectForKey("color") as? NSData {
if let currentColor = NSUnarchiver.unarchiveObjectWithData(newLoadedData) as? NSColor {
color = currentColor
}
}
color.set()
linear.lineWidth = CGFloat(storage.integerForKey("width"))
linear.stroke()
}
override func mouseDown(theEvent: NSEvent) {
super.mouseDown(theEvent)
let location = theEvent.locationInWindow
var lastPt = theEvent.locationInWindow
lastPt.y -= frame.origin.y
linear.moveToPoint(lastPt)
}
override func mouseDragged(theEvent: NSEvent) {
super.mouseDragged(theEvent)
var newPt = theEvent.locationInWindow
newPt.y -= frame.origin.y
linear.lineToPoint(newPt)
needsDisplay = true
}
}
И теперь мне нужно написать функцию совершенно ясно, что точки зрения.
Спасибо, я искал способ удалить чертеж, но это тоже будет хорошо. –
Да, вы не можете удалить рисунок после его применения. Альтернативой является установка флага на ваших классах, который включает или выключает конкретный чертеж и указывает представление на «setNeedsDisplay: YES». При следующем проходе через представление будет пусто, и если никакого дополнительного чертежа не потребуется, это не будет сделано. Это более эффективно, чем рисовать каждый раз, а затем стирает его с помощью прямоугольной заливки. –