我有一个 UIImageView,它加载几张不同尺寸的不同图片,并用黑色背景填充 UIImageView 的剩余区域。我正在尝试找到一种方法,点击黑色背景上的任意位置(而不是图像上)将隐藏 UIImageView。有办法做到这一点吗?
编辑:
这是屏幕的布局。我正在尝试使其点击黑色区域中的任意位置将隐藏大图像并仅显示背景中的其余内容,如下所示:
大图和黑色背景都在一个 UIImageView 中。我只需要一种方法来检测黑色区域中的点击,然后我可以设置 imageview.hidden = true
最佳答案
这里是一个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
中,我为 ImageView 提供了一个UIGestureRecognizer
,当用一根手指点击它一次时就会激活它。点击时,将调用 gestureActivated
函数。
然后使用 ImageView 中的点击位置创建一个常量。
获得点击位置后,我们检查它是否在图像上。如果没有,那么我们隐藏 ImageView 。
关于swift - 在 UIImageView 背景上检测到触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38720662/