我正在运行这段代码...
[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”时,该视图将滑出屏幕。当用户按下“stop”时,面板将滑回视图中。
至少曾经如此。自从启用自动布局(我需要应用程序的其他部分)以来,我就不能只更改视图的框架,因此我采用了变换方法。
您可以通过将视图放入视图控制器并添加一个按钮来运行动画来查看此效果。
谢谢