将 UIImageView 设置为 nil

Setting UIImageView to nil

我正在尝试为我的简单绘图应用清除绘图 canvas。我创建了一个按钮,通过将 UIImageView.image 设为 nil 来删除图像。但是,按下按钮时没有任何反应。 ViewController代码:

import UIKit

var smoothLineView : SmoothLineView = SmoothLineView()

class ViewController: UIViewController {

@IBOutlet weak var mainDrawingCanvas: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

    smoothLineView = SmoothLineView(frame: mainDrawingCanvas.bounds)
    self.view.addSubview(smoothLineView)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func deleteCurrentCanvas(sender: AnyObject) {
    mainDrawingCanvas.image = nil
}

}

还可以找到完整的项目:https://github.com/BananaSplitio/OpenSketch

不太确定您要在这里做什么。但是,这就是我认为正在发生的事情。

您似乎只是使用图像 (mainDrawingCanvas) 的边界来创建另一个视图 (smoothlineView)。不管你之后对图像做什么都没有关系,因为图像不是你视图的一部分。你的view是smoothlineView,不是mainDrawingCanvas。

到remove/delete图像(我假设是smoothlineView),尝试这样做,它应该工作。

import UIKit

var smoothLineView : SmoothLineView = SmoothLineView() 

class ViewController: UIViewController {

    @IBOutlet weak var mainDrawingCanvas: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        smoothLineView = SmoothLineView(frame: mainDrawingCanvas.bounds)
        self.view.addSubview(smoothLineView)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func deleteCurrentCanvas(sender: AnyObject) {
        smoothLineView.removeFromSuperview()
    }

}

您将 smoothLineView 添加到 self.view,然后该按钮将不会接收事件。将 smoothLineView 设置为蓝色,你就会明白为什么它不起作用。

需要做一个按钮的IBOutlet,在addsubview smoothLineView后添加如下代码,

self.view.bringSubviewToFront(button)

那么您需要删除您忘记删除的按钮的一些 IBAction。 之后,你需要在deleteCurrentCanvas方法中更改你的清除操作。