2

ドキュメントを確認しましたが、混乱していると言って恥ずかしいです。

シナリオ:

UIView3 のコンテナのように機能する がありますUIButtons。このコンテナーは、最初は境界{0, 0, 35, 35}であり、内部の各ボタンは同じ座標 ( alpha0) です。ユーザーが特定のアクションを実行すると、コンテナーの境界が に変更され{0, 0, 100, 35}、ボタンが x-origin 5、35、および 65 にそれぞれalpha1 でアニメーション化され、サイズ変更されたコンテナー内に広がるようになります。これをコンテナの拡張状態と呼びます。ユーザーによる同じアクションにより、元の収縮状態に戻ります。

目標

現在、[UIView animateWithDuration:]ブロックを使用してこれを行っていますが、 を使用して弾む効果を追加したいと考えています。これUIDynamicAnimatorにより、展開された状態に切り替えると、コンテナーが跳ね返ってサイズが変更されます (少し余分にサイズが変更され、ターゲットの境界に跳ね返ります)。ボタンもバウンスします (もう少し移動すると、ターゲット境界にバウンスします)。

混乱:

UIDynamicAnimatorUIDynamicBehaviorUIAttachmentBehaviorUIDynamicItem……これらすべてが私の理解UIKitDynamicをオーバーフローさせています。を使用する必要があると思いますがUISnapBehavior 、どうすればよいかわかりません。

4

1 に答える 1

8

UIDynamicAnimator、および他のすべての動的アニメーションを使用する必要はありませんでした。必要なのはanimateWithDuration:delay:usingSpringWithDamping: initialSpringVelocity: options: animations: completion:クラス メソッドだけでした。単純なanimateWithDuration:メソッドの代わりに使用するだけで、私が意図したとおりの動作が得られます。

サンプルコード:

    [UIView animateWithDuration:0.4
                          delay:0
         usingSpringWithDamping:0.5
          initialSpringVelocity:0.5
                        options:0
                     animations:^{

                         //Animation code

                     } completion:nil];
于 2014-05-29T06:01:32.967 に答える