0

アプリケーションに 5 つの UIButtons があります。これらの UIButtons はすべて Array に格納されています。私のコードを以下に示します。

  NSMutableArray *Buttons = [NSMutableArray arrayWithObjects:btn1, btn2, btn3,btn4,btn5, nil];

今、私はこれらすべての UIButtons を特定の方向に継続的に移動したいと考えています。

ここに画像の説明を入力

私はすでにCAkeyframeAnimationでいくつかのアニメーションを行っていますが、iOSの初心者として、CAKeyframeAnimationを使用して複数のUIButtonでこれらのタイプの連続アニメーションを実行することは困難です。

4

2 に答える 2

1

ユーザーのタッチに反応するようにこれらのボタンを移動しようとしている場合、Core Animation を直接使用することはおそらく最善の策ではありません。以下の私の答えは、この仮定に基づいています。

Core Animation ベースのアニメーションが実行されている場合、画面上で移動するレイヤー (「プレゼンテーション レイヤー」 — 詳細については、こちらを参照) は現在の位置ではなく、アニメーションの最終位置でのみタッチを登録します。 、ユーザーには見えません。したがって、移動するブートンは、ほとんどの場合、無効になっているかのように動作します。これを回避することは可能ですが、あまり便利ではなく、そのように使用することは意図されていません。

もう 1 つの欠点は、CAAnimation一度作成するとあまり柔軟ではないことです。たとえば、必要に応じてボタンの動きを現在の位置で停止するのは面倒です。

UIButtons代わりに、フレームを手動で計算して移動する必要があります。動きをディスプレイのリフレッシュ レートと同期させ、アニメーションを滑らかにするCADisplayLinkには、 を使用します。これは、ディスプレイがリフレッシュされるたびに呼び出されるメソッドを登録するために使用できる非常に使いやすいクラスです。このメソッドでは、ビューの目的の動作に基づいてビュー フレームを更新する必要があります。

于 2012-09-21T19:06:22.700 に答える
1

あなたがすでに何をしたかはわかりませんが、UIView アニメーションを使用してから、UIViewAnimationOptionAllowUserInteraction オプションを有効に設定してください。

次に、ボタンにジェスチャ認識機能を配置できます。

アニメーション化するには、UIView のブロック ベースのアニメーションを使用するだけです。実行する必要があるのは 4 つだけで、それらを繰り返す必要があります。手間がかかりますが、迅速で汚い解決策です。

于 2012-09-24T11:21:48.250 に答える