获取 UIView 在 UIImageView 中的位置

Get position of an UIView in an UIImageView

我有以下内容:

(1) 是一个 Giphy。我希望能够将 giphy 移到垃圾箱。我得到 giphy 的坐标:

    print("position of finger in moving giphy")
    let position = gesture.location(in: imageViewImageTaken)

我很难找到 "trash" 图标的位置。这个图标是我的 UIImageView 的子视图,它是一张照片。

我试图通过以下方式获取 "trash" 图标的位置:

let positionTrash = imageViewBin.convert(imageViewBin.bounds, to: imageViewImageTaken)

但是当我将手指移到垃圾桶图标上并得到 (1) 的坐标时,它不匹配。

如何正确接收到(2)的位置?

由于frame是视图在父视图坐标系中的x,y,width,height,可以使用frame获取垃圾箱的x,y,width,height图像视图坐标系中的图标。不需要使用 convert:

let trashFrame = imageViewBin.frame

你似乎对如何检查手指是否接触到垃圾桶还有一个误解。为此,您需要检查 CGRect (trashFrame) 是否包含 CGPoint (position)。这可以使用 CGRect.contains:

来完成
if trashFrame.contains(position) {
    print("The finger is on the trash icon!")
}

或者,获取手指的位置并检查它是否在 bounds 垃圾箱中:

let position = gesture.location(in: imageViewBin)
if imageViewBin.bounds.contains(position) {

}