【问题标题】:Delete a filled NSBezierPath删除一个填充的 NSBezierPath
【发布时间】:2018-03-03 19:42:03
【问题描述】:

我画了一个红色圆圈。然后我想删除它。我该怎么做?

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】:

    你可以使用视图的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
        }
    
    }
    

    【讨论】:

    • 或者,根据您的需要,您可能只想通过设置self.signal?.isHidden = trueself.signal?.isHidden = false 来根据需要隐藏和显示视图。
    • 什么错误?看到这条线var signal: Red?你添加了这个
    • 奇怪的错误,把你的代码粘贴到gist.github.com并分享链接,让我看看
    • 很高兴它有帮助!
    猜你喜欢
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 2017-06-16
    • 2015-04-21
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多