私がやろうとしている続編のアニメーションがあります。2つのステップがあります。
ステップ1:レイヤーを取得し、視点を少し変更して、レイヤーの上部が後ろに移動しているように見せます。sourceViewController.view.layer.transform CATransform3DMakePerspective(0, 0.003, CATransform3DIdentity);
ステップ2:スケールを80%に変更し、パースペクティブを通常に戻します。これにより、わずかなスイングズームアウトアニメーションのようになります。
sourceViewController.view.layer.transform = CATransform3DScale(sourceViewController.view.layer.transform, 0.8, 0.8, 1);
sourceViewController.view.layer.transform CATransform3DMakePerspective(0, 0, sourceViewController.view.layer.transform);
私の最大の問題はこれです。レイヤーで同時に2つのアニメーションを実行することはできません。両方を同時に実行するのではなく、最初の変換の最後に自動的に開始します。これはconcatで修正できますが、ステップ1のトップを実行したいので、レイヤーはその状態を保存してステップ2を実行できるようにするため、3つすべてを連結することはできません。
同じレイヤーに1つ以上の変換があるマルチステップアニメーションを作成するにはどうすればよいですか?以下の例で述べたように、ステップ1をスキップして、ステップがすでに完了したかのように開始します。説明するのがやや紛らわしいことは知っています。これが私のアニメーションです。
[UIView animateWithDuration:2.0 遅延:0.0 オプション:UIViewAnimationCurveEaseIn アニメーション:^ { sourceViewController.view.layer.transform = CATransform3DMakePerspective(0、0.003、sourceViewController.view.layer.transform); [UIView animateWithDuration:1.0 遅延:1.0 オプション:UIViewAnimationCurveEaseOut アニメーション:^ { sourceViewController.view.layer.transform = CATransform3DConcat(CATransform3DScale(sourceViewController.view.layer.transform、0.8、0.8、1)、CATransform3DMakePerspective(0、0、sourceViewController.view.layer.transform)); } 完了:nil]; } 完了:^(BOOL終了){ }];
私はグーグルですべてを試しました。最後のエルフが離れた場所から始まる同じレイヤーで連続したアニメーションを実行する方法が必要です。IDがレイヤーが変換された場所ではなく開始状態に戻ることを読んだため、CATransform3DIdentityの代わりにレイヤーを渡します。