删除填充的NSBezierPath

问题描述 投票:1回答:1

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

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)
}
swift macos cocoa draw
1个回答
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
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.