1

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

我一直在尝试手动设置行为属性的各种组合,例如将重力设置为 0、0,或者分别将幅度和矢量设置为 0,甚至一次将所有这些加上角度设置为 0 ,而事情只是继续前进。

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

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

4

1 回答 1

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];
}
于 2013-12-05T09:36:17.800 回答