問題タブ [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 投票する
1 に答える
47 参照

swift - CATransaction を使用して CALayer の外観をアニメーション化する方法は?

CALAyerどこからともなく現れるようにアニメーション化したいと思います。最初にレイヤーの変換を「x:0、y:0にスケーリング」に設定できると思いました。次に、アニメーションを実行して、変換を「x: 1、y: 1 にスケール」に設定します。これがアイデンティティです。これにより、レイヤーがゼロから拡大されたように見えると思いました。しかし、これを実装しようとすると、アニメーションなしでレイヤーがすぐに表示されました。

MCVE:

次に、私のVCで:

これは、最初の呼び出しもアニメーション化されているためだと思いましたsetAffineTransform(なぜそれが影響するのか正確にはわかりませんでしたが、影響があるのではないかと疑っていました)。そのため、2 番目の呼び出しを完了ブロックに移動しようとしました。

ただし、出力は同じです。一方、最初のsetAffineTransform呼び出しの後に少し待つと、次のように機能します。

しかし、これがこの問題を解決する方法だとは思いません。おそらく、その間に何らかのライフサイクル メソッドが呼び出され (どれかはわかりません)、setAffineTransformそのライフサイクル メソッドの後に 2 回目の呼び出しを行う必要があります... (?)

代わりにこれを使用できることはわかっていますCABasicAnimationが、アニメーションの終わりを検出するためにデリゲートを使用する必要がある方法が好きではありません。これは私にとって多くのことを非常に面倒にします。0.1秒遅らせるのが効いたので、これはCATransactionsで無理じゃないですよね?

CALayerアニメーションを使用して表示するにはどうすればよいですか?