删除填充的NSBezierPath

时间:2018-03-03 19:42:03

标签: swift macos cocoa draw

我画了一个红圈。然后我想删除它。我怎么能这样做?

class Red: NSView {
    var red = 255
    var green = 0
    var blue = 0

    override func draw(_ dirtyRect: NSRect) {
        let circleFillColor = NSColor(red: CGFloat(red), green: CGFloat(green), blue: CGFloat(blue), alpha: 1)
        let cPath: NSBezierPath = NSBezierPath(ovalIn: dirtyRect)
        circleFillColor.set()
        cPath.fill()
    }
}

override func viewDidLoad() {
    super.viewDidLoad()
    let signal = Red(frame: NSRect(x: 146, y: 18, width: 25, height: 25))
    self.view.addSubview(signal)
}

1 个答案:

答案 0 :(得分:2)

您可以使用视图的removeFromSuperview方法删除,如下:

class ViewController: NSViewController {

    var signal: Red?

    override func viewDidLoad() {
        super.viewDidLoad()

        self.signal = Red(frame: NSRect(x: 146, y: 18, width: 25, height: 25))
        self.view.addSubview(signal!)
    }

    func deleteCircle() {
        self.signal?.removeFromSuperview()
        self.signal = nil
    }

}