swift - 删除填充的 NSBezierPath

标签 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)
}

最佳答案

您可以使用 View 的 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
    }

}

关于swift - 删除填充的 NSBezierPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49088453/

相关文章:

ios - 如何在 UISearchController 中自定义 searchBar?

macos - 是否有适用于 Mercurial 的 GUI 使我的生活变得非常轻松?

objective-c - 来自 observeValueForKeyPath :ofObject:change:context: 的参数

objective-c - 调整大小后的图像未正确绘制为位图

objective-c - 如何使用 Mac 上的系统首选项以编程方式安排系统唤醒?

ios - 在自定义 UIView 的 updateConstraint 函数中获取帧大小

ios - UIScrollViewDelegate 未在自定义类中调用

mysql - Swift Vapor/Fluent 模型中的其他数据类型(例如 Unsigned SmallInt、Datetime 和 Decimal)?

swift - 应用程序窗口位于所有窗口之上,包括其他应用程序窗口

mysql - 开启 Apache Basic Auth 导致服务器连接失败