我有一些使用UIDynamicAnimation的UIViews,特别是UIGravityBehavior。我需要知道如何让它们随时停止和启动。
我一直在尝试手动设置行为属性的各种组合,比如将重力设置为0,0,或者将幅度和向量分别设置为0,或者甚至将所有加上角度的设置为0一下子,事情就一直在继续。
我可以将它们移动到不同的位置,但它们只保留了之前的动力并继续前进。
我能想到的最后一件事就是完全从行为中删除视图,但我需要停止并开始很多不同的时间,这看起来非常笨重。这是唯一的方法吗?
答案 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];
}