首页 > 解决方案 > 快速获取 ImageView 的当前位置

问题描述

这是我第一次尝试快速构建应用程序,所以请原谅我的理解非常有限。


在我将 ImageView 添加到我的 ViewController 之后,连接了一个 Pan Gesture Recognition 并添加了能够移动 ImageView 的代码,这工作得很好,我现在希望能够获得我的 ImageView 中间的当前坐标移动它。目标是能够计算屏幕中间和 ImageView 中间之间的欧几里德距离,以便检测与 ImageView 周围的 Circle 的碰撞,但现在,仅仅能够打印坐标就真的帮我。感谢您提供有关如何解决此问题的任何建议或提示。

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }


    @IBOutlet weak var questImg: UIImageView!

    @IBAction func panMade(_ sender: UIPanGestureRecognizer) {
        if sender.state == .began || sender.state == .changed {
                   let translation = sender.translation(in: sender.view)
                   let changeX = (sender.view?.center.x)! + translation.x
                   let changeY = (sender.view?.center.y)! + translation.y

                   sender.view?.center = CGPoint(x: changeX, y: changeY)
                   sender.setTranslation(CGPoint.zero, in: sender.view)
    }

    }


}

标签: iosswiftuiimageviewcollision-detection

解决方案


要获取 UIImageView 的位置,您可以使用 frame.origin,如下所示:

@IBAction func panMade(_ sender: UIPanGestureRecognizer) {
    if sender.state == .began || sender.state == .changed {
               let translation = sender.translation(in: sender.view)
               let changeX = (sender.view?.center.x)! + translation.x
               let changeY = (sender.view?.center.y)! + translation.y

               var coordX = questImg.frame.origin.x
               var coordY = questImg.frame.origin.y
               print(coordX + "," + coordY)

               sender.view?.center = CGPoint(x: changeX, y: changeY)
               sender.setTranslation(CGPoint.zero, in: sender.view)
}

推荐阅读