我正在尝试使用UIImageView。我想要一个东西,当我点击图像时,它会使图像的大小变成其两倍(总是使其变成两倍大小,所以如果我点击不止一次,它就会变得越来越大)。
这是我目前拥有的,并且我不确定如何构建本来想使用的handlePan
函数。我使用了平移手势,因为我不知道如何具体接近轻击手势。如果我的代码没有正确的方向,请随时提出最有效的建议。我将不胜感激。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var ImageView1: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
let gesterRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handlePan)) //handlePan is the tap function I am trying to build
ImageView1.isUserInteractionEnabled = true
ImageView1.addGestureRecognizer(gesterRecognizer)
}
}
答案 0 :(得分:1)
如评论中所述,首先您需要轻击手势识别器,而不是平移手势识别器。在下面的代码中,每次用户在imageView上单击时,您都可以将图像的宽度和高度加倍。
在此实现中,我希望以0.5秒为过渡设置动画,这不是必需的,但是这样做看起来会更好。同样,假设您希望图像始终处于中心位置,则需要将中心设置为框架的中心,这样它就不会随着图像框架的变化而浮动。但是,如果您希望使用其他布局或位置,则需要更新以下行:
self.imageView.center = self.view.center
此外,您需要通过将其设置为true来启用imageView的用户交互属性。
import UIKit
class ViewController: UIViewController {
@IBOutlet var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTap))
imageView.isUserInteractionEnabled = true
imageView.addGestureRecognizer(tapGestureRecognizer)
}
@objc func handleTap() {
UIView.animate(withDuration: 0.5) {
self.imageView.frame.size.height *= 2
self.imageView.frame.size.width *= 2
self.imageView.center = self.view.center
}
}
}