点击时如何调整UIImageView的大小?

时间:2018-11-25 17:06:42

标签: ios swift uiimageview

我正在尝试使用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)
    }
}

1 个答案:

答案 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
    }
}

}