【问题标题】:How to stop something with a UIGravityBehavior?如何用 UIGravityBehavior 停止某些事情?
【发布时间】:2013-12-04 22:05:24
【问题描述】:
我有一些使用 UIDynamicAnimation 的 UIView,特别是 UIGravityBehavior。我需要知道如何让它们随时停止和启动。
我一直在尝试手动设置行为属性的各种组合,例如将重力设置为 0、0,或者分别将幅度和矢量设置为 0,甚至将所有这些加上角度设置为 0一下子,一切都在继续。
我可以将它们移动到不同的位置,但它们只是保持以前的动力并继续移动。
我能想到的最后一件事是从行为中完全删除视图,但我需要在很多不同的时间停止和启动,这看起来非常笨拙。这是唯一的方法吗?
【问题讨论】:
标签:
ios
uikit-dynamics
uidynamicbehavior
【解决方案1】:
方法:
[aView removeMotionEffect:effect];
已优化,因此您不必害怕执行它。
我的猜测是,与他们的矢量和重力“玩耍”,同时管理大量视图将比仅仅消除他们的行为要困难得多。
你可以使用这个sn-p:
- (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];
}