私はUIViewといくつかのレイヤーを作成しました。私はそれらのレイヤーをUIViewのレイヤーのルートでsuperview-subview階層に編成し、いくつかのジェスチャー認識機能を追加しました。ジェスチャー認識機能からイベントのレイヤージオメトリを操作しようとしています。暗黙的なアニメーションやCATransactionsを使用します。明示的なアニメーションは使用されません。CoreAnimationがジャークを取得する
期間が0のCATransactionを作成すると実際の結果は十分ですが、期間を0.2に設定すると、奇妙な結果が得られます。イベントが急激でなく、前回のトランザクションで次の開始前に完了する時間があるすべてがOKです(例:タッピング)が、ピンチやパンなどの時間が足りない場合は、サイズ変更されているレイヤーがジャークを開始します。視覚的には、アニメーションが最初の点にロールバックし、新しい値に再び始まるように見えます。
これは何も表示されません。私は-[UIView layoutSubviews]
でレイアウトを実行しようとしましたが、ジェスチャー認識ハンドラでsetNeedsDisplay
を呼び出しました。私はまた、このロジックを別々のメソッドに分離しようとしましたが、それは助けになりません。
もう一度繰り返しますが、暗黙のアニメーションのみを使用します。そして私が知りたいのは、それがなぜ起こるのかです(しかし、回避する方法ではありません)。
手がかりはありますか?
を実装する必要があります... –