シナリオの背後:CALayerのプレゼンテーション層は遅く、時間
Iは、ユーザタップは、ブロックが停止すると7に列0から移動ブロックの移動の束を持っています。
- (IBAction)userTap:(id)sender
{
[block1.layer removeAllAnimations];
[block2.layer removeAllAnimations];
[block3.layer removeAllAnimations];
}
私は今、プレゼンテーション層を取得し、私の基本的な情報を抽出します:
CALayer *player = [block1.layer presentationLayer];
float currentTranslation = [[pLayer valueForKeyPath:@"transform.translation.x"] floatValue];
// Set position of non-moving blocks here
currentTranslationが正しい、と私は、同様のタイミングを使用して、それを確認した
は、ここに私のコードです。しかし、アニメーションは私のpresentationLayerよりも速く実行されているようですので、タップしたときに発生するジャークが表示されます。
ここでは何が起こっているのですか。これをどのように修正できますか?
あなたはペース計算モード( 'kCAAnimationPaced'または' kCAAnimationCubicPaced')とキーフレームアニメーションをやっていますか?私はプレゼンテーション層があなたがそれをするときにたくさん離れているのを見ました。また、プレゼンテーションレイヤーは「現在表示されているレイヤーのバージョンに近似しています」、正確な値ではありません。 –