快速获取 ImageView 的当前位置

Posted

技术标签:

【中文标题】快速获取 ImageView 的当前位置【英文标题】:Get current position of ImageView in swift 【发布时间】:2020-04-01 23:22:33 【问题描述】:

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


在我将 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)
    

    



【问题讨论】:

【参考方案1】:

要获取 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)

【讨论】:

感谢您的快速回答,这是否意味着我可以将那条确切的行放在我的班级中,也许可以在下面打印(位置)以将坐标打印到我的控制台?因为现在我在尝试时遇到错误...... 但是我会把你的那行代码放在上面的代码的什么地方呢?因为当把它放在 questImg 的声明下面时,我得到了 6 个错误,第一个是“一行上的连续声明必须用 ';' 分隔” 我之前不必以某种方式声明位置吗?抱歉,由于我的理解水平低,我只是不明白你的行的语法到底发生了什么...... 尝试用我的替换 panMade 函数。 谢谢,现在我明白了。现在它可以完美地打印坐标。

以上是关于快速获取 ImageView 的当前位置的主要内容,如果未能解决你的问题,请参考以下文章

快速旋转 UIImage

Android如何获取当前ImageView中的src资源

快速从 imageView.image 创建 jpeg 图像

swift-UIButton设置image上下左右位置

Swift - 动画 ImageView

UIImageView的image的图片显示 imageView.contentMode