快速获取 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 的当前位置的主要内容,如果未能解决你的问题,请参考以下文章