【问题标题】:How to see if two UIImageView's have touched如何查看两个 UIImageView 是否已触摸
【发布时间】:2017-05-14 06:13:17
【问题描述】:

如何确定两个 UIImageView 是否相互接触?我试图让它意识到他们已经相互接触,然后如果他们这样做了,就在里面添加一些代码。

希望有人能帮忙,谢谢!

我已经试过了

if (newArea.frame.intersects(yolo.frame)) {

        print("ok")

    }

【问题讨论】:

  • 不,该解决方案不适用于我的问题
  • 您需要明确您的具体需求。您发布的代码检查两个视图的框架是否相交。如果这不是您想要的,那么用您需要的更具体的细节更新您的问题。也许举个例子。

标签: ios swift swift3 uiimageview


【解决方案1】:

您可以检查UIImageViews 是否像这样重叠:

if img1.bounds.contains(img2.bounds) 
{
   print("overlapped")
}

【讨论】:

  • 这可能是一个糟糕的答案,因为边界基本上总是从(0,0) 开始,当它们不相交时,这将无法识别。问题的原始代码很好,假设图像视图具有相同的superview。他们可能不这样做,这就是为什么它不起作用
  • 相交和触摸有什么区别吗?
  • 问题是找出两个图像是否相互接触,我的代码就是这样做的。
【解决方案2】:

不依赖于视图层次结构的正确方法是使用convertRect

let r1 = newArea.superview.convert(newArea.frame, to: nil)
let r2 = yolo.superview.convert(yolo.frame, to: nil) 
if r1.intersects(r2) { stuff() }

这会将两个帧都转换为屏幕坐标,然后在它们成为超级视图的本地坐标之前检查交叉点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多