将 UIImageView 设置为 nil

问题描述 投票:0回答:2

我正在尝试为我的简单绘图应用程序清除绘图画布。我创建了一个按钮,通过将

UIImageView.image
查看为零来删除图像。然而,按下按钮时什么也没有发生。 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

ios swift uiimageview cgcontext
2个回答
2
投票

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

您似乎只使用图像(mainDrawingCanvas)的边界来制作另一个视图(smoothlineView)。无论您之后如何处理图像都没有关系,因为该图像不是您视图的一部分。您的视图是 smoothlineView,而不是 mainDrawingCanvas。

要删除/删除图像(我假设是 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()
    }

}

0
投票

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

您需要制作一个按钮的IBOutlet,并在addsubview smoothLineView后添加以下代码,

self.view.bringSubviewToFront(button)

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

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