在UIImageView上检测到触摸背景

问题描述:

我有一个UIImageView加载了几张不同尺寸的不同图片,并用黑色背景填充了UIImageView的其余区域。我试图找到一种方法,在黑色背景上的任何地方点击,但不在图像上,将隐藏UIImageView。无论如何要做到这一点?在UIImageView上检测到触摸背景

编辑:

这是屏幕的布局。我试图做起来很攻随时随地在黑色区域会隐藏大图像,并只显示在后台剩下的事情看起来像这样:

大图像和黑色的背景都在一个UIImageView中。我只需要一种方法来检测黑色区域中的水龙头,然后我可以设置imageview.hidden = true

+0

请提供您的**代码** –

+0

您需要在您的问题中提供更多详细信息,否则它可能会因为信息太广泛和/或信息不足而无法回答。 – AlBlue

这是一类UIViewController将实现功能。它看起来像你正在使用UICollectionView,但它应该仍然工作。

import UIKit 

class ViewController: UIViewController { 

    let imageView = UIImageView() 
    var gesture = UITapGestureRecognizer() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     gesture = UITapGestureRecognizer(target: imageView, action: #selector(ViewController.gestureActivated)) 
     gesture.numberOfTapsRequired = 1 
     gesture.numberOfTouchesRequired = 1 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func gestureActivated() { 
     let tap = gesture.location(in: imageView) 

     if let image = imageView.image?.accessibilityFrame { 
      if !image.contains(tap) { 
       imageView.isHidden = true 
      } 
     } 
    } 

} 

viewDidLoad我给图像观看UIGestureRecognizer当一个手指被用于一次点击它时被激活。水龙头制成后,调用gestureActivated函数。

然后用图像视图中的水龙头位置创建常量。

获得水龙头的位置后,我们检查它是否在图像上。如果不是,那么我们隐藏图像视图。

+0

我的imageview包含黑色背景以及图像本身,我希望手势只能在点击黑色背景时识别,但不能在点击图像时识别 – Mark

+0

您是否确认在选择图像时操作会被触发? –

+0

@Mark,我更新了我的答案。 –