問題タブ [catransaction]

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 投票する
3 に答える
11380 参照

iphone - CAKeyframeAnimationが終了したときにセレクターを指定するにはどうすればよいですか?

CAKeyframeAnimationを使用して、CGPathに沿ったビューをアニメーション化しています。アニメーションが完成したら、他のメソッドを呼び出して別のアクションを実行できるようにしたいと思います。これを行う良い方法はありますか?

UIViewのsetAnimationDidStopSelectorの使用を見てきましたが、ドキュメントからは、UIViewアニメーションブロック(beginAnimationsおよびcommitAnimations)内で使用された場合にのみ適用されるように見えます。念のため試してみましたが、うまくいかないようです。

次にいくつかのサンプルコードを示します(これはカスタムUIViewサブクラスメソッド内にあります)。

私が考えていた回避策は機能するはずですが、最善の方法ではないようですが、NSObjectのperformSelector:withObject:afterDelay:を使用することです。遅延をアニメーションの長さに等しく設定する限り、問題はありません。

もっと良い方法はありますか?ありがとう!

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

objective-c - CATransactionが設定した期間を尊重しないのはなぜですか?

iPhoneアプリをMacOSXに移植しています。このコードは、iPhoneで正常に使用されていました。

Macバージョンでは、次のようにCATransactionを使用してアニメーションをグループ化します。

アニメーションは、継続時間が1.0秒であることを除いて、正常に実行されています。setAnimationDurationを変更できます。何かを呼び出すか、完全に省略しても、アニメーションの継続時間は毎回1.0秒です。また、setAnimationTimingFunction:呼び出しは何もしていないと思います。ただし、setCompletionBlock:は機能しています。これは、アニメーションの完了時にそのブロックが実行されているためです。

私はここで何が間違っているのですか?

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

iphone - CATransaction内のカスタムCALayerプロパティをアニメーション化する

これまで、とのおかげで、CALayerサブクラスのカスタムプロパティをアニメーション化することができまし+ (BOOL)needsDisplayForKey:(NSString *)keyCABasicAnimations

animationDidStop:finished:ただし、すべてのコードが1つのメソッドで実行されるため、アニメーションの連鎖は非常に難しい場合があります。

そこで、新しいブロック構文をサポートしているので、に切り替えたいと思いましたCATransactions。これにより、で完了ブロックを指定できるようになります+ (void)setCompletionBlock:(void (^)(void))block

しかし、CATransactionいわゆる「アニメーション化可能なプロパティ」しかアニメーション化できないように見え、needsDisplayForKey:実装されたメソッドを使用しても、カスタムレイヤープロパティでは機能しません。

CALayerでは、でアニメーション化するカスタムプロパティを作成する方法はありCATransactionますか?

編集: 私の意図は、線に沿って何かをすることです:

myProperty値のへの更新はnewValueアニメーション化されません。actionForLayer:forKey:myLayerを管理するビューに実装 して、を返すようにしましたCABasicAnimation。ただしactionForLayer:forKey:、キーで呼び出されることはありませんmyProperty。はい、それはサブレイヤーに過ぎmyLayerません。はい、view.layerのデリゲートをmyLayer包含ビューに設定しました。

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

objective-c - CALayer - レイヤー サイズをアニメーション化すると、アニメーションの実行がブロックされる

一連のレイヤーが配置され、単一の「アクティブ化された」レイヤー(基本的にユーザーがクリックしたレイヤー)が同時に配置およびサイズ変更される方法があります。アクティブ化されたレイヤーを含むすべてのレイヤーは、より大きなレイヤーのサブレイヤーです。これが私の方法です:

私が経験している問題は本当に奇妙です。上記のコードを使用すると、アニメーションは実行されません (非アクティブなレイヤーのアニメーションも実行されません)。しかし、新しいフレームのサイズと幅を設定する行をコメントアウトするとすぐに、魔法のようにアニメーションが再び機能し始めます。

これが起こるべき理由はありますか?

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

iphone - CAトランザクション遅延

コア アニメーションでインプリシット アニメーションの遅延を設定するにはどうすればよいですか? kCATransactionAnimationDelay がないことに驚いています。

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

serialization - 複数の CAAnimation を順次結合

私は CATransactions について読んでいて、これが私の問題を解決するのに役立つかもしれないと考えました。

これは私がやりたくないことです。同じレイヤーに 3 つのアニメーションがあり、それぞれに独自の長さがあります。CAKeyframeAnimation と CGMutablePathRef を使用してアニメーションを作成します。

たとえば、次のように言います。

  • anim1 -> 持続時間 5 秒
  • アニメ2→3秒
  • アニメ3→10秒

今、それらを順番にシリアライズしたいと思います。CAAnimationGroup を使用しようとしましたが、アニメーションが同時に実行されます。CATransaction について読みましたが、解決策はありますか? 少し例を挙げていただけますか?

手伝ってくれてありがとう !

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

performance - iOS Core-Animation: CATransaction / Interpolating transform matrix のパフォーマンスの問題

iPhone アプリのパフォーマンスをテストしています。

質問: 古い変換マトリックスと新しい変換マトリックスの間の補間というコア アニメーションのデフォルト動作を無効にすると、パフォーマンスが大幅に向上するのはなぜですか?

彼らは、計算コストが非常に高くなる可能性のある何をしている可能性がありますか? 2 つのマトリックス間の補間に世界で最も精巧な技術を使用しているとしても、これが 5fps になるとは信じられません。

プロセスが M_resultant = k*M_last + (1.-k)*M_target 以外のものであるとは想像できません

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

iphone - 複数のCALayerを同時に正常にアニメーション化するにはどうすればよいですか?

画面上の任意のパスに沿ってその位置を変更するために、単一のレイヤーを正常にアニメーション化しています。私は今、このアニメーションを複数回複製して、何かが角を曲がっているような錯覚を与えようとしています。コードをCATransaction内に配置し、ループの反復ごとに開始位置をインクリメントするループに配置し、ループの後にCATransactionをコミットしました。コードがループしていない場合(つまり、1つのレイヤーだけがアニメーション化されている場合)、アニメーションの最後にすべてのレイヤーが表示されます(アニメーションの最後にアニメーションの最後でデリゲートがそれらを削除する前に、animationDidStopで表示される効果は同じです)。 )。

私が書いたコードは次のようになります。

ここで、[board caclulatePath:s]は、CGPointを表すNSValueのNSArray*を返します。

自分が求めている効果をどのように達成できますか(同じパスをたどるlaser.pngの複数のコピーはどれですか)?[Laser.pngは20pxx20pxの赤い正方形です];

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

ios - +[CATransaction同期]トランザクション内で呼び出されます

サービスからデータを読み込んでいるときにiPadアプリを閉じると、アプリは閉じますが、何もせずにすぐに再び開きます。この時点では、私は何もできません。アプリを閉じることができず、アプリまたはデバイスを操作できません。デバイスを再度使用する唯一の方法は、デバイスを再起動することです。アプリはクラッシュせず、単にデバイスを無効にします。

これが発生すると、 applicationWillResignActiveapplicationDidEnterBackgroundの直後に次の行がコンソールに3回表示されます。

アプリがクラッシュしても大丈夫ですが、デバイスが完全に役に立たなくなるという事実は大きな問題です。このバグを傍受したり、CATransactionでこの問題が発生したときに何らかの方法で検出できれば、それで問題ありません。

何か案は?

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

core-animation - 親NSViewのサイズを変更している間、CALayerを同じ位置に保つ方法は?

CALayer親レイヤー (レイヤー ホスティングのルート レイヤー) の左下隅に描かれた小さな赤いボックス (インスタンス) を想像してくださいNSView

親ビューのフレームが変更されても、赤いボックスは画面上の同じ位置に留まる必要があります。これを行うには、親ビューの左下隅を基準にして位置を調整します。

問題は、場合によってはちらつきがあり、正しい位置に表示される前に、拡張フレームの左下隅に赤いボックス レイヤーが描画されているのが見えることです。

フレームと位置の変更を 1 つにラップするとCATransaction、両方の変更が一緒に行われると想定しましたが、常に機能するとは限りません (ドキュメントでは、トランザクションを使用するとアニメーションが同時に開始されると書かれていますが、まだ競合があるようです)時々状態)。

NSView子レイヤーを認識された位置に保ちながら、親のフレームを調整するにはどうすればよいですか?

例とコード:

NSView とボックスレイヤー

私自身のアイデア:

  1. 赤いボックス レイヤーを非表示にし、位置を更新して、もう一度表示します

  2. 制約を使用して、右隅にバインドします。問題は、このオフセットも変更される可能性があり、同じちらつきの問題につながる可能性のある制約を更新する必要があることです。