如何使用UIGravityBehavior停止某些事情?

时间:2013-12-04 22:05:25

标签: ios uikit-dynamics uidynamicbehavior

我有一些使用UIDynamicAnimation的UIViews,特别是UIGravityBehavior。我需要知道如何让它们随时停止和启动。

我一直在尝试手动设置行为属性的各种组合,比如将重力设置为0,0,或者将幅度和向量分别设置为0,或者甚至将所有加上角度的设置为0一下子,事情就一直在继续。

我可以将它们移动到不同的位置,但它们只保留了之前的动力并继续前进。

我能想到的最后一件事就是完全从行为中删除视图,但我需要停止并开始很多不同的时间,这看起来非常笨重。这是唯一的方法吗?

1 个答案:

答案 0 :(得分:4)

方法:

[aView removeMotionEffect:effect];

已经过优化,因此您不必担心执行它。 我的猜测是“玩”他们的矢量&重力,虽然管理大量的观点将比解除他们的行为困难得多。

您可以使用此代码段:

- (void)removeMotionEffectsFromViews:(NSArray *)views
{
     for (id obj in views) {

        if ([obj isKindOfClass:[UIView class]]) {

            UIView *aView = (UIView *)obj;

            for (UIMotionEffect *effect in [aView motionEffects]) {
                [aView removeMotionEffect:effect];
            }
        }
    }

    [self.animator /*UIDynamicAnimator*/ removeAllBehaviors];
}