【发布时间】:2019-12-16 13:29:31
【问题描述】:
我下面的 swift 代码在 uiview 控制器上放置了 2 个不同的图像视图。当用户点击 imageivew 时,我希望该特定的 imageview 改变颜色。我不知道如何将该方法应用于多个图像视图。我想你会使用 sender 方法。
import UIKit
class ViewController: UIViewController {
var slider = UISlider()
var image1 = UIImageView()
var image2 = UIImageView()
var with = 80
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
[slider,image1,image2].forEach{
$0.translatesAutoresizingMaskIntoConstraints = false
view.addSubview($0)
$0.backgroundColor = .systemOrange
}
slider.frame = CGRect(x: view.center.x-115, y: view.center.y+200, width: CGFloat(with), height: 30)
image1.frame = CGRect(x: view.center.x-115, y: view.center.y, width: CGFloat(with), height: 30)
image2.frame = CGRect(x: view.center.x-115, y: view.center.y-200, width: CGFloat(with), height: 30)
slider.minimumValue = 10
slider.maximumValue = 150
image1.isUserInteractionEnabled = true
let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageViewTapped))
image1.addGestureRecognizer(gestureRecognizer)
image2.addGestureRecognizer(gestureRecognizer)
}
@objc func imageViewTapped(sender: UITapGestureRecognizer) {
if let imageView = sender.view as? UIImageView {
imageView.backgroundColor = .yellow
}
}
}
【问题讨论】:
-
如果您不打开用户交互,您将不会在任何图像视图上获得任何点击!
-
作为建议,我会在您的
var名称和方法签名中更具描述性(例如:ji(sender:) -
@matt 添加了用户交互启用
-
@Adrian 根据您的建议更改了我的代码。
-
事情正在发生,但我仍然没有看到任何代码,您可以在图像视图上放置点击手势识别器。您似乎已经注释掉了一些内容。
imageViewTapped永远不会被调用,因为您没有使用调用它的一个东西,即点击手势识别器。
标签: swift imageview uitapgesturerecognizer sender