swift 将UIImageView设置为nil

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

我试图为我的简单绘图应用程序清除绘图画布。我创建了一个按钮,通过将UIImageView.image设置为nil来删除图像。但是,当按下按钮时,什么也没有发生。ViewController代码:

  1. import UIKit
  2. var smoothLineView : SmoothLineView = SmoothLineView()
  3. class ViewController: UIViewController {
  4. @IBOutlet weak var mainDrawingCanvas: UIImageView!
  5. override func viewDidLoad() {
  6. super.viewDidLoad()
  7. smoothLineView = SmoothLineView(frame: mainDrawingCanvas.bounds)
  8. self.view.addSubview(smoothLineView)
  9. }
  10. override func didReceiveMemoryWarning() {
  11. super.didReceiveMemoryWarning()
  12. // Dispose of any resources that can be recreated.
  13. }
  14. @IBAction func deleteCurrentCanvas(sender: AnyObject) {
  15. mainDrawingCanvas.image = nil
  16. }
  17. }

字符串
完整的项目也可以找到:https://github.com/BananaSplitio/OpenSketch

e5njpo68

e5njpo681#

我不太清楚你想做什么,但我认为正在发生的事情是这样的。
您似乎只是使用图像的边界(mainDrawingCanvas)来创建另一个视图(smoothlineView)。无论您之后如何处理图像都没有关系,因为图像不是您视图的一部分。您的视图是smoothlineView,而不是mainDrawingCanvas。
要删除/删除图像(我假设是smoothlineView),尝试这样做,它应该工作。

  1. import UIKit
  2. var smoothLineView : SmoothLineView = SmoothLineView()
  3. class ViewController: UIViewController {
  4. @IBOutlet weak var mainDrawingCanvas: UIImageView!
  5. override func viewDidLoad() {
  6. super.viewDidLoad()
  7. smoothLineView = SmoothLineView(frame: mainDrawingCanvas.bounds)
  8. self.view.addSubview(smoothLineView)
  9. }
  10. override func didReceiveMemoryWarning() {
  11. super.didReceiveMemoryWarning()
  12. // Dispose of any resources that can be recreated.
  13. }
  14. @IBAction func deleteCurrentCanvas(sender: AnyObject) {
  15. smoothLineView.removeFromSuperview()
  16. }
  17. }

字符串

展开查看全部
watbbzwu

watbbzwu2#

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

  1. self.view.bringSubviewToFront(button)

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

相关问题