私はこのコードを実行しています...
[UIView animateWithDuration:0.2
delay:0.0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
CGAffineTransform settingsTransform = CGAffineTransformMakeTranslation(self.settingsView.frame.size.width, 0);
CGAffineTransform speedTransform = CGAffineTransformMakeTranslation(-self.speedView.frame.size.width, 0);
self.settingsView.transform = settingsTransform;
self.speedView.transform = speedTransform;
} completion:nil];
しかし、それが実行されると、ビューは変換の半分を反対方向にジャンプしてから、正しい方向の半分の位置にスライドします。
アニメーションの長さを5秒に遅くしましたが、最初のジャンプは瞬時に行われ、変換の半分が間違った方向に行われます。
このコードを使用してアニメーション化すると...
[UIView animateWithDuration:0.2
delay:0.0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
self.settingsView.transform = CGAffineTransformIdentity;
self.speedView.transform = CGAffineTransformIdentity;
} completion:nil];
それはまったく同じことをします。
その結果、最初に変換の半分が間違った方向にジャンプするため、最終的な動きは目的の変換の半分になります。
なぜこれが起こっているのか本当に理解できませんか?
何か案は。
::編集::
考えられるあいまいさを解消します。
私は、これらのビューを元の場所に「バウンス」させようとはしていません。私がアニメートしているビューは、画面の端にあるコントロールパネルのようなものです。ユーザーが「移動」を押すと、ビューが邪魔にならないようにスライドします。ユーザーが「停止」を押すと、パネルがスライドしてビューに戻ります。
少なくとも彼らは以前は。自動レイアウト(アプリの他の部分に必要)を有効にしているので、ビューのフレームを変更することはできないので、変換ルートを使用しました。
この効果は、ビューをビューコントローラとボタンに貼り付けてアニメーションを実行することで確認できます。
ありがとう