2017-11-16 8 views
-1

コードは次のとおりです。回転のtoValueを2 * PIに設定しましたが、アニメーションの後にこれらのビューが水平でないのはなぜですか?

CABasicAnimation *rotateWhenBoom = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; 
rotateWhenBoom.fromValue = @0; 
rotateWhenBoom.toValue = @(M_PI*2.0); 
rotateWhenBoom.duration = 0.3f; 
rotateWhenBoom.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; 

CAAnimationGroup *boom = [CAAnimationGroup animation]; 
boom.animations = @[[self moveOutWithBtn:btn], rotateWhenBoom]; 
boom.fillMode = kCAFillModeForwards; 
boom.removedOnCompletion = NO; 

そして効果: effect

ビューはすべて水平にアニメーションする前に。これらのビューに回転アニメーションを追加し、回転のtoValueは2 * PIです。アニメーションの後、なぜ水平でないのですか? ありがとうございます!コードの

+0

いただきました問題?投稿された効果は期待されていますか、それとも今見えますか?あなたは、アニメーションの後の元の位置にビューが戻ると言っていますか?それはケースを使用している場合removedOnCompletion –

+0

私はあなたの質問に投票しました。 –

+0

@SandeepBhandariアニメーションの前に、ビューはすべて水平です。これらのビューに回転アニメーションを追加し、回転のtoValueは2 * PIです。アニメーションの後、なぜ水平でないのですか? – LeeG4ng

答えて

0

あなたの最後の2行は: boom.fillMode = kCAFillModeForwards; boom.removedOnCompletion = NO;

は、層は、アニメーションの最終的な状態にとどまっていることと、それが完了したときにアニメーションが自動的層から除去されていないことを意味します。あなたは、おそらく最後の行boom.removeOnCompletion = NO

これを説明するのCALayerとCAAnimationのための良いガイドを削除する:https://www.objc.io/issues/12-animations/animations-explained/

関連する問題