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

时间:2015-05-13 18:44:31

标签: ios swift uiview

所以我正在使用swift的Breakout应用程序。我目前有一个球,UIViewcornerRadius = 20.0来模仿一个球。我还有一个桨,这是另一个UIView,其cornerRadius = 5.0更小。我已经以编程方式制作了九个红色视图,每个视图大50x50单位。我的球,桨和块元素有碰撞和运动机制.var dynamicAnimator:UIDynamicAnimator!

var pushBehavior: UIPushBehavior!

var collisionBehavior: UICollisionBehavior!

var ballDynamicBehavior: UIDynamicItemBehavior!

var paddleDynamicBehavior: UIDynamicItemBehavior!

var blockBehaviors: UIDynamicItemBehavior!

我的问题在于球是否与球碰撞,但我不知道如何检测球是否击中了阻挡区,但我知道如何让视线出现并消失(给出视图)与View的颜色匹配的backgroundcolor,并将其从blockBehaviors中删除。基本上,我想知道如何检测两个视图何时通过.function或其他东西发生碰撞。

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

1 个答案:

答案 0 :(得分:0)

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

参见"让对象响应冲突"这里有一个简短的教程:http://www.raywenderlich.com/76147/uikit-dynamics-tutorial-swift