swift 将UIImageView设置为nil

iswrvxsc  于 2024-01-05  发布在  Swift
关注(0)|答案(2)|浏览(126)

我试图为我的简单绘图应用程序清除绘图画布。我创建了一个按钮,通过将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

e5njpo68

e5njpo681#

我不太清楚你想做什么,但我认为正在发生的事情是这样的。
您似乎只是使用图像的边界(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()
    }

}

字符串

watbbzwu

watbbzwu2#

如果你在self.view中添加了smoothLineView,那么这个按钮就不会收到事件。如果把smoothLineView设置为蓝色,那么你就会明白为什么它不工作了。
你需要做一个按钮的IBOutlet,并在addsubview smoothLineView之后添加以下代码,

self.view.bringSubviewToFront(button)

字符串
然后你需要删除一些你忘记删除的按钮的IBAction。之后,你需要改变你在deleteCurrentCanvas方法中的清除操作。

相关问题