【问题标题】:change color of uiimageview in a empty array by pressing on it通过按下它来更改空数组中uiimageview的颜色
【发布时间】:2026-01-06 03:15:01
【问题描述】:

我下面的 swift 代码有一个按钮,当触摸时会在视图控制器上放置一个图像视图。我唯一想做的就是当一个单独的图像视图不是所有的图像视图只是一个选择被触摸时,我想仅在触摸时将颜色从紫色更改为蓝色,并且一次一个。

import UIKit

class ViewController: UIViewController {

   var count: Int = 0
   var ht = -90
   var ww = 80
   var moveCounter = 0
   var counter = 0
   var arrTextFields = [UIImageView]()
   var b7 = UIButton()


   override func viewDidLoad() {
       super.viewDidLoad()

       [b7].forEach {
           $0.translatesAutoresizingMaskIntoConstraints = false
           view.addSubview($0)
           $0.backgroundColor = .systemOrange
       }

       b7.frame = CGRect(x: view.center.x-115, y: view.center.y + 200, width: 70, height: 40)
       b7.addTarget(self, action: #selector(addBOx), for: .touchUpInside)

   }

   //func that adds imageview.
   @objc func addBOx() {

       let subview = UIImageView()

       subview.isUserInteractionEnabled = true
       arrTextFields.append(subview)
       view.addSubview(subview)


       subview.frame = CGRect(x: view.bounds.midX - 0, y: view.bounds.midY + CGFloat(ht), width: CGFloat(ww), height: 35)


       subview.backgroundColor = .purple
       subview.tag = count

       count += 1
       ht += 50
       arrTextFields.append(subview)



   }}

【问题讨论】:

  • 你能附上截图吗??,我没有正确理解你的问题,你想在 ButtonClick 上做什么????
  • buttonClick 是调用 func addBoX 时。该函数将图像视图添加到视图控制器。当单击其中一个图像视图时,该图像视图的颜色应从紫色变为蓝色。我会尽快添加一些图片。
  • @NayanDave 添加了我正在尝试做的截图。

标签: swift tags imageview append user-interaction


【解决方案1】:

您已经将图像视图的isUserInteractionEnabled 属性设置为true。要响应触摸事件,请创建一个 UITapGestureRecognizer 并将其添加到图像视图中,如下所示:

let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageViewTapped))
subview.addGestureRecognizer(gestureRecognizer)

然后在 imageViewTapped 方法中,您可以从 sender 参数中提取图像视图:

@objc func imageViewTapped(sender: UITapGestureRecognizer) {
    if let imageView = sender.view as? UIImageView {
        // Change the imageView's background here
    }
}

【讨论】: