使用UIPushBehavior加速UIView

时间:2014-02-01 15:11:04

标签: ios objective-c uikit physics-engine

我正试图加速UIView的时间/距离。到目前为止,似乎UIPushBehavior是连续的,即它不会停止直到它碰到一个不可移动的物体。有没有办法加速UIView随着时间的推移?或者距离?

P.S我在物理白话方面不是很好,所以请善待哈哈

1 个答案:

答案 0 :(得分:2)

有几点想法:

  1. 如果你想减慢推动时间,以便一次推动转换到一些有限的行进距离,你必须(a)添加一个线性resistance(所以它减慢速度); (b)使用UIPushBehaviorModeInstantaneous(因此不会继续推动)。要添加resistance,您需要添加UIDynamicItemBehavior

    UIDynamicItemBehavior *resistanceBehavior = [[UIDynamicItemBehavior alloc] initWithItems:@[viewToAnimate]];
    resistanceBehavior.resistance = 1.0;
    [self.animator addBehavior:resistanceBehavior];
    

    在控制每次推动产生的距离方面,这是(a)你使用的pushDirection向量的大小的组合; (b)resistance您在UIDynamicItemBehavior中申请的项目density; (c)您搬家的物品的大小; (d)UIDynamicItemBehavior您在UIView中申请的项目UIPushBehaviorModeInstantaneous。在您实现单次推送所需的距离之前,最好先处理这些变量。

  2. 另一方面,如果您希望“加速UIPushBehaviorModeContinuous一段时间”,而不是pushDirection,则应使用UIPushBehavior。通过持续施加力,它将在UIDynamicAnimator中继续加速,直到从{{1}}移除{{1}}。