我正在运行此代码...
[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];
它做同样的事情。
结果是最终的移动是所需变换的一半,因为它首先在错误的方向上跳跃了一半的变换。
我真的想不通为什么会这样?
有任何想法吗。
::编辑::
消除一些可能的歧义。
我并不是想让这些观点“反弹”到它们所在的位置。我正在制作动画的视图就像屏幕边缘的控制面板。当用户按下“go”时,视图会滑开。当用户按下“停止”时,面板滑回视图中。
至少他们曾经如此。由于启用了自动布局(我需要应用程序的其他部分),我不能只更改视图的框架,所以我采用了转换路线。
您可以通过将视图粘贴到视图控制器和运行动画的按钮来查看此效果。
谢谢