Ios 如何在突破应用程序中检测视图冲突?

Ios 如何在突破应用程序中检测视图冲突?,ios,swift,uiview,Ios,Swift,Uiview,所以我正在swift中开发一个突破应用程序。我现在有一个球,它是一个UIView,用cornerRadius=20.0来模拟一个球。我还有一个桨,它是另一个UIView,具有更小的cornerRadius=5.0。我以编程方式创建了九个红色视图,每个视图都有50x50个单位大。我的球、桨和挡块元素都有碰撞和运动机制 var pushBehavior: UIPushBehavior! var collisionBehavior: UICollisionBehavior! var ballDyn

所以我正在swift中开发一个突破应用程序。我现在有一个球,它是一个
UIView
,用
cornerRadius=20.0
来模拟一个球。我还有一个桨,它是另一个
UIView
,具有更小的
cornerRadius=5.0
。我以编程方式创建了九个红色视图,每个视图都有50x50个单位大。我的球、桨和挡块元素都有碰撞和运动机制

var pushBehavior: UIPushBehavior!

var collisionBehavior: UICollisionBehavior!

var ballDynamicBehavior: UIDynamicItemBehavior!

var paddleDynamicBehavior: UIDynamicItemBehavior!

var blockBehaviors: UIDynamicItemBehavior!
我这里的问题是,球与块碰撞,但我不知道如何检测球是否击中块,但我知道如何使视图出现和消失(为视图提供与视图颜色匹配的背景色,并将其从blockBehaviors中删除。基本上,我想知道如何通过.function或其他方式检测两个视图何时发生冲突


如果我还可以添加多个级别,那也太棒了,哈哈。

一个
UICollisionBehavior
需要一个采用
UICollisionBehaviorDelegate
协议的委托。这个委托有一个方法
collisionBehavior
,每当检测到冲突时就会调用

例如:

var collisionBehavior: UICollisionBehavior!       // create a UICollisionBehavior as you have done
collisionBehavior.addItem(ball)                   // add your items to it
collisionBehavior.addItem(block)                  // (faster to do this in the init step with `items` argument)
collisionBehavior.collisionDelegate = myDelegate  // give it a delegate which adopts UICollisionBehaviorDelegate
dynamicAnimator.addBehavior(collisionBehavior)    // add the behavior to your animator
然后为您的委托类实现
func-collisionBehavior
。通常人们只使用
UIViewController
本身作为委托,因此上面的一行应该是
collisionBehavior.collisionDelegate=self

请参阅此处的“使对象对碰撞作出响应”,以获得一个好的简短教程: