1

UIDynamicAnimation、特に UIGravityBehavior を使用している UIView がいくつかあります。いつでも停止および開始できるようにする方法を知る必要があります。

重力を 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 に答える