tapGesture改变颜色

时间:2017-08-22 20:35:33

标签: ios swift uitapgesturerecognizer

我正在尝试使用tapGesture为UIImageView命名rDot。当点击图像视图rDot时,我希望在另一个名为 wCircle 的viewController上使用不同的UIImageView变为红色。问题是代码运行,但是当我点按rDot时,其他图片wCircle不会变为红色。

 override func viewDidLoad() {
    super.viewDidLoad()

    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:)))
    rDot.isUserInteractionEnabled = true
    rDot.addGestureRecognizer(tapGestureRecognizer)
}    

func imageTapped(tapGestureRecognizer: UITapGestureRecognizer)
{
 let wCircle = UIImageView(image: UIImage(named:"wCircle")?.withRenderingMode(.alwaysTemplate)) //error here
    wCircle.tintColor = UIColor.red
}

5 个答案:

答案 0 :(得分:1)

在Swift代码的上下文中,EXC_BAD_INSTRUCTION通常意味着您遇到了编译器陷阱,即由于在运行时检测到错误而被编译器插入到代码中的未定义指令。其中最常见的原因是:

  1. 无法打开可选项 - 这可以是强制解包(!)或隐式解包(访问隐式解包的可选项,即nil)。

  2. 数组越界

  3. 失败的强制转换(为!),因为该值为nil可选或因为该值类型错误。

  4. 检查wCircle是否为零。 检查插座是否正确连接。

答案 1 :(得分:0)

确保您的图片素材的图片名称为" wCircle"区分大小写 , 再次,在不在项目包中的资产中,我认为UIImageView无法初始化,因为带有" wCircle"资产中不存在

答案 2 :(得分:0)

初始化UITapGestureRecognizer的方式不正确。 尝试

UITapGestureRecognizer(target: self, action: #selector(ViewController.imageTapped(tapGestureRecognizer:)))

ViewController替换为您的控制器的班级名称

答案 3 :(得分:0)

确保您的对象wCircle存在并成功初始化

答案 4 :(得分:0)

什么是" wCircle" ? UIImage没有名为tintColor的属性,如果你想改变图像的颜色改变他的容器UIImageView&t tintColor