如何使用UIDynamicAnimator避免动态变形

时间:2014-06-15 13:17:06

标签: ios uikit-dynamics

我有一个简单的类似俄罗斯方块的应用程序,我从视图的顶部放下方形彩色标签,一旦它们与窗口的底部边框碰撞就堆积起来。

我正在使用iOS动态框架来模拟重力和碰撞。 我有两个问题:

  1. 当集团与下边界碰撞时,如何彻底消除弹跳效应?我已经尝试将碰撞行为的弹性设置为0(文档说这意味着根本没有反弹)但是集团仍然反弹一点。 所以我想这至少是文档中的一个错误。任何人都可以在有人建议尝试其他解决方法之前确认这一点吗?

    我尝试的另一种技术是在物体开始碰撞时设置非常高的阻力,并在碰撞结束时将其重置为低阻力。这种方法的问题在于,这种对所有块都是通用的行为会在每次底部发生碰撞时导致其他下降块受到影响(并减慢)

  2. 第二个问题是关于如何阻止动画引擎在堆积时挤压块(模拟重力对非完全刚体的真实效果)在我的应用程序中我可以清楚地看到块没有对齐,因为它们被上面块的重量挤压了。

    我该如何避免这种行为?我试图将密度设置为1,将弹性设置为0而没有运气。

    我还注意到底部的一些块的y坐标= 481,这意味着它们已被推出父视图。鉴于底部被视为碰撞边界,这怎么可能?

1 个答案:

答案 0 :(得分:0)

  1. 要消除弹跳效果,您需要向动画师添加UIDynamicItemBehavior。并将UIDynamicItemBehavior上的属性“elastic”设置为0.您还可以将UIDynamicItemBehavior上的“resistance”属性设置为1或最大值CGFLOAT_MAX。
相关问题