【问题标题】:How to resize the UIImageView when tapped on?点击时如何调整 UIImageView 的大小?
【发布时间】:2018-11-26 01:27:04
【问题描述】:

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

【问题讨论】:

  • 当您只需要点击手势时,为什么还要使用平移手势?
  • 令人困惑的问题。也许我可以帮忙。首先,一两个问题。当您的问题涉及 - 我认为正确 - tap 手势时,为什么要使用 pan 手势?我认为这是实际问题。也许与处理点击然后在图像上平移有关?其次,您的具体问题是什么?识别水龙头(或平底锅)?增加图像视图的大小?
  • 我建议让你的 imageView 水平和垂直居中与 IBoutlets 对齐,以便你的 imageView 的宽度和高度的 NSLayoutConstraints。请参阅此答案以了解如何获取约束的 IBOutlets stackoverflow.com/questions/32087809/…
  • @dfd,嗨,我更新了问题!
  • 添加到我的评论的是@Harshal。它解决了自动布局约束。您既没有包含任何暗示它是自动布局的内容,也没有实际包含您引用的 handlePan 函数。

标签: ios swift uiimageview


【解决方案1】:

如 cmets 中所述,首先您需要一个点击手势识别器而不是平移手势识别器。在下面的代码中,每次用户点击 imageView 时,您都可以将图像的宽度和高度加倍。

在这个实现中,我想用 0.5 秒为过渡设置动画,这不是必需的,但这样做可能看起来更好。还假设您希望图像始终位于中心,您需要将中心设置为框架的中心,这样它就不会随着图像框架的变化而浮动。但如果您希望有不同的布局或定位,则需要更新以下行:

self.imageView.center = self.view.center

您还需要启用 imageView 的用户交互属性,将其设置为 true。

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

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多