問題タブ [cakeyframeanimation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
296 参照

iphone - CGPath の一部のみに画像を追従させる

iPhone で事前に決められたパスに画像をたどらせることはそれほど難しくないことはわかっていますが (こちらを参照)、画像がパスの一部だけをたどることが可能かどうか疑問に思っています。たとえば、A から B に向かうパスがある場合、B に向かう途中の 1/4 だけをアニメーション化するにはどうすればよいでしょうか? 下に図を書きました。

私が検討した 1 つの方法は、古いパスの上に 1/4 だけの長さの新しい透明なパスを描画することです。しかし、パスの 1/4 にポイントがない場合、これは実際には不可能です。他のアイデアはありますか?

ありがとう

ここに画像の説明を入力

0 投票する
2 に答える
621 参照

iphone - CAKeyFrameAnimation は繰り返されません

こんにちは、オブジェクトをフルサイズ (1) からほぼゼロ (0.01) にフェードダウンさせる CAKeyFrameAnimation スケールがあります。

次に、これが呼び出されます:

オブジェクトを隠しているように見えますが、一瞬フルサイズで再表示する前ではなく、小さな/何もない効果へのフェードを台無しにします:P

「animationDidStop」が呼び出されたときにアニメーションがフレーム 1 に戻らないようにするにはどうすればよいですか? ありがとう!

0 投票する
10 に答える
37876 参照

ios - CoreAnimation - 不透明度のフェードインとフェードアウトのアニメーションが機能しない

で使用するためのかなり単純な CoreAnimation を作成しようとしていますAVComposition。私の目標はCALayer、さまざまなサブレイヤーを介して、タイトルをフェードインおよびフェードアウトし、次に画像をフェードインおよびフェードアウトする を作成することです。基本的にスライドショーです。これは、 を使用して .mov にエクスポートされていAVAssetWriterます。

WWDC 2011 AVEditDemo の助けを借りて、タイトルと画像を表示することができました。問題は、それらがすべて同時に画面に表示されることです。

各レイヤーを不透明度 0.0 で作成しました。CABasicAnimation次に、次のコードを使用して、それらを 0.0 から 1.0 にフェードする を追加しました。

問題は「beginTime」プロパティにあるようです。「1.0」は遅延を意味するため、アニメーションの開始から 1 秒後に開始されます。ただし、すぐに画面に表示されます。フェードアウトのアニメーション

このコードの逆のフェード アウトでは、単純に fromValue を 1.0 に、toValue を 0.0 に変更します。開始時間が 4.0 で、完全に機能します。

を作成するために以下を使用していますanimatedTitleLayer

イメージ フェードイン アニメーションの beginTime は 5 秒間隔です。タイトルのように、フェード アウト アニメーションは正常に機能します。

どんな助けでも大歓迎です!

乾杯!

編集

回答はすべて役に立ちましたが、最終的に、CALayer. フェードアウト アニメーションは、最後に追加されたものであったため、機能していました。

次に、CAAnimationGroup を試しましたが、同じキー値パスを変更していたため、これは機能しませんでした。

CAKeyframeAnimationだから、これにはaが最適だと気づきました。私だけがそれにも苦労しています!コードは正常にフェードインしていますが、フェードアウトしていません。さまざまなfillModeを試したり、期間を変更したりしましたが、うまくいきません!!

これが私のコードです:

0 投票する
1 に答える
402 参照

objective-c - CATextLayer オブジェクトの CAKeyFrameAnimation に一貫性がないのはなぜですか?

意図: ボタン クリックは、別のボタン クリック リクエストによって停止されるまで、CATextLayer オブジェクトの文字列値をアニメーション化することをリクエストします。アクションが混乱しないように、これらのアクションを担当する 2 つの別個のボタンがあります。

実際に何が起こるか: 再生リクエストでは、textLayer の文字列がアニメーション化されず、その文字列値が変更されずに、割り当てられた「0」が表示される場合がいくつかあります (上記を参照)。この場合、アニメーションは初期化されず、CATextLayer オブジェクトに割り当てられません。ただし、エラーは一貫していません。CATextLayer オブジェクトが適切な文字列値を表示する場合もいくつかあります。ボタンを連続してクリックした場合、CATextLayer オブジェクトがその文字列値をアニメートするのを確認する成功率は約 70% です。addAnimation メソッドのコード行をバイパスするシナリオはありますか?

問題に関するご協力に感謝いたします。前もって感謝します!

0 投票する
4 に答える
1953 参照

iphone - CAKeyframeAnimation を削除してもメモリが解放されない

画像のアニメーションを表すために、ImageView のレイヤーに CAKeyframeAnimation を追加しています。

アニメーションを開始したいときは、次のように呼び出します。

アニメーションが終了したら、完全に削除してメモリを解放したいと考えています。

これを行い、Instruments-Activity Monitor を使用すると、完全な imageView を解放しない限り、メモリは解放されません。

UIImageViewを破壊せずにそのアニメーションメモリを解放するにはどうすればよいですか???

0 投票する
2 に答える
4120 参照

ios - uiscrollviewイベントが発生したときにNSTimerが起動されない

UIScrollViewにUIImageViewを配置しました。基本的に、このUIImageViewは非常に大きなマップを保持し、「矢印」がナビゲーション方向を指す事前定義されたパス上にアニメーションを作成しました。

しかし、uiscrolleventsが発生するたびに、MainLoopがフリーズし、NSTimerが起動されず、アニメーションが停止したと思います。

UIScrollView、CAKeyFrameAnimation、またはNSTimerに、この問題を解決する既存のプロパティはありますか?

0 投票する
1 に答える
249 参照

ios - CAKeyFrameAnimationは手がかりなしで失敗します

以下に私のコードセクションを示します。ボタンに息の効果を表示するために、不透明度のアニメーションを実装したいと思います。

実際には、2つのCALayerを削除するために呼吸アニメーションが停止することを知っておく必要があります。しかし、フラグがNOでanimationDidStop()あることがわかりました。これは、アニメーションが正しく完了しておらず、呼吸アニメーションが表示されていないことを示しています。次に、[self removeBreathAnimationLayers]2つのCALayerを削除するために呼び出さないようにしましたが、アニメーションはうまく機能します。

誰かがこの問題について何か提案がありますか?私は本当に何か他のことをするためにアニメーションがうまく停止することを知る必要があります。

お返事ありがとうございます。どうもありがとう!

-ロビー

0 投票する
3 に答える
5820 参照

ios - UIImageView の iOS CAKeyframeAnimation rotationMode

ベジェ パスに沿って移動する UIImageView オブジェクトの位置のキー フレーム アニメーションを試しています。この写真は、アニメーション前の初期状態を示しています。青い線はパスです。最初はまっすぐ上に移動します。明るい緑色のボックスは最初のバウンディング ボックスまたは画像です。濃い緑色の「ゴースト」は移動中の画像です。

初期状態

rotationMode を に設定してアニメーションを開始するnilと、イメージはパス全体で期待どおりに同じ方向を保ちます。

しかし、rotationMode を に設定してアニメーションを開始するkCAAnimationRotateAutoと、画像はすぐに反時計回りに 90 度回転し、パス全体でこの向きを維持します。パスの最後に到達すると、正しい向きで再描画されます (最終的な場所に再配置した UIImageView が実際に表示されます)。

ここに画像の説明を入力

特にCAKeyframeAnimationのrotationMode状態に関するAppleドキュメントの場合、rotationModeが法線ではなくパスの接線に画像を向けることを素朴に期待していました

パスに沿ってアニメートするオブジェクトを回転させて、パスの接線に一致させるかどうかを決定します。

それで、ここでの解決策は何ですか?画像を事前に時計回りに 90 度回転させる必要がありますか? それとも、私が見逃しているものがありますか?

ご協力いただきありがとうございます。


3月2日編集

次のようなアフィン回転を使用して、パス アニメーションの前に回転ステップを追加しました。

パス アニメーションの後、次のように回転をリセットします。

これにより、画像は期待どおりにパスをたどります。ただし、画像のちらつきという別の問題に直面しています。私はすでにこのSOの質問でちらつきの問題の解決策を探しています:

アニメーションの終了時に iOS CAKeyFrameAnimation スケーリングがちらつく

だから今、私は物事を良くしたか悪くしたかわかりません!


3月12日編集

Caleb は、はい、画像を事前に回転する必要があったと指摘しましたが、Rob は私の問題をほぼ完全に解決するすばらしいコード パッケージを提供してくれました。Rob がしなかった唯一のことは、アセットが水平方向ではなく垂直方向で描画されることを補うことでした。したがって、アニメーションを実行する前にアセットを 90 度事前回転する必要があります。でもねえ、物事を動かすために私がいくつかの仕事をしなければならないのは唯一の公平です.

したがって、私の要件に合わせてロブのソリューションをわずかに変更すると、次のようになります。

  1. UIView を追加するときは、事前に Rotate して、以下を設定することで追加された固有の回転に対抗しますrotationMode

    theImage.transform = CGAffineTransformMakeRotation(90*M_PI/180.0);

  2. アニメーションの最後にその回転を保持する必要があるため、完了ブロックが定義された後にビューの変換を新しいスケール ファクターで爆破するのではなく、現在の変換に基づいてスケールを構築します。

    theImage.transform = CGAffineTransformScale(theImage.transform, scaleFactor, scaleFactor);

これで、イメージが期待どおりのパスをたどるようにするために必要な作業はすべて完了です。


3月22日編集

ベジェ パスに沿ったオブジェクトの移動を示すデモ プロジェクトを GitHub にアップロードしました。コードはPathMoveにあります。

iOS でオブジェクトをベジエ パスに沿って移動するというブログにも書いています。

0 投票する
3 に答える
8621 参照

ios - iOS CAKeyFrameAnimation スケーリング アニメーション終了時のちらつき

キー フレーム アニメーションの別のテストでは、UIImageView (と呼ばれるtheImage) をベジエ パスに沿って移動し、移動に合わせて拡大することを組み合わせて、パスの最後に 2 倍の大きな画像を生成します。これを行うための最初のコードには、アニメーションを開始するための次の要素が含まれています。

次に、アニメーションが完了したら、画像をより大きなサイズで保持したいので、次を実装します。

これはすべて機能します。問題は、アニメーションの最後にtheImage一瞬ちらつくことです。これは見栄えが悪くなります。これは、変換を新しいサイズに設定したアニメーションの最後のトランジションであると推測しています。

これを実験する際に、上記とは少し異なる形式を試しましたが、それでも同じちらつきが発生しました。

しかし、オリジナルと同じサイズでアニメーションを終了すると、ちらつきはありませんでした:

だから私の大きな問題は、ちらつきなしでこの画像をアニメーション化し、アニメーションの最後に別のサイズで終わるにはどうすればよいですか?


3月2日編集

私の最初のテストは、画像を拡大することでした。私はちょうどそれを縮小しようとしました (IE scaleFactor = 0.4)、そしてちらつきはもっと目に見えて、私が見ているものに関してもっと明白でした. これは一連のイベントでした:

  1. 元のサイズの画像が画面の開始位置に描画されます。
  2. 画像がパスに沿って移動すると、画像は滑らかに縮小します。
  3. 完全に縮小されたイメージは、パスの最後に到達します。
  4. その後、画像は元のサイズでペイントされます。
  5. イメージは最終的に縮小されたサイズでペイントされます。

したがって、私が見ているちらつきはステップ 4 のようです。


3月22日編集

ベジェ パスに沿ったオブジェクトの移動を示すデモ プロジェクトを GitHub にアップロードしました。コードはPathMoveにあります。

iOS でオブジェクトをベジエ パスに沿って移動するというブログにも書いています。

0 投票する
1 に答える
1055 参照

ios - CoreAnimation との画像、テキスト、および配置の同期

私はアニメーションの初心者で、数日間 CoreAnimation を試しています。この質問が意味をなさない場合は、遠慮なく警告してください。ただし、次のことを達成しようとしています。私は3つのオブジェクトを持っています:

  • 1つは画像であり、特定のパターンに従って移動する必要があります
  • 1 つは 2 つの画像を交換する UIImage である必要があります
  • 1 つは、内容が変化するテキスト (CATextLayer?) である必要があります。

3 つのアクションは同期して発生する必要があります。

例として、-1 と +1 の間で振動する ECG のような正弦波関数を示すプログラムについて考えてみましょう。最初の画像は、現在の値 (-1、-0.9、-0.8、...) に従って移動します。 0、+0.1、+0.2、... 1)、スワップ画像は正の値の場合は「+」、負の値の場合は「-」を示し、テキストは「正」と「負」の間で交互に表示されます。

CAAnimationGroup を試してみましたが、明らかに何かが欠けています。いくつかのコード:

さて...問題:

1) スワップ イメージはスワップごとに元に戻ります。したがって、A->B を交換すると、予想される継続時間内に A から B に移動することがわかりますが、その後 A に戻ります。これについて SO で多くのスレッドを読みましたが、機能させることができませんでした.

2) テキストレイヤーの文字列をタイミングを合わせて変更する...これはこのインフラストラクチャで可能ですか? 基本的に、例で説明されているように、最初の画像が移動するとすぐにテキストとスワップ画像を変更しようとしています。

3) CABasicAnimation のデリゲートを設定しても効果はありませんが、CAAnimationGroup には効果があります。その結果、アニメーションごとに、グループ全体だけで animationDidStop のようなイベントを管理することはできません。そうする別の方法はありますか?

4) 3) に続いて、CAAnimationGroup を使用して、イベントをインターセプトして停止/開始動作を作成することは可能ですか? 再生/停止ボタンが必要で、アニメーションを中断したところから再開したいとしましょう。

決定的な質問として、誰かが同様のことをしたかどうか、そして最も重要なのは、この方法 (CAAnimationGroup を使用) が実際に進むべき道なのか、それとも CAKeyFrameAnimation などを使用する方が良いのかを知りたいだけです。