我在我的项目中创建了一些动画。基本上,我使用 UIView animate 和 CGAffineTransform,但是发生了一件非常奇怪的事情,我不知道。希望有人能帮我解决这个问题。提前致谢。
这是奇怪的事情:用户点击一个按钮后,该按钮滑出屏幕,另外两个按钮在屏幕上滑动(我只是改变了这些按钮的中心点来实现这个动画)。而且,过了一段时间,屏幕上的一个视图开始抖动(我使用 CGAffineTransform 来实现)。
这时,奇怪的事情发生了——之前滑出屏幕的按钮又出现在原来的位置,而另外两个按钮消失了(没有动画,只是出现并消失)。
以下是相关代码,
1) 按钮滑出和滑入动画相关代码
- (IBAction)start:(id)sender
{
// 1. Slide in cancel and pause button
[UIView animateWithDuration:0.5f animations:^{
[startButton setCenter:CGPointMake(startButton.center.x + 300.0f, startButton.center.y)];
[cancelButton setCenter:CGPointMake(cancelButton.center.x + 300.0f, cancelButton.center.y)];
[pauseButton setCenter:CGPointMake(pauseButton.center.x + 300.0f, pauseButton.center.y)];
} completion:^(BOOL finished) {
if (finished) {
NSLog(@"Move finished");
}
}];
}
2) 视图抖动动画相关代码
- (void)shakeView:(UIView *)viewToShake
{
CGFloat t = 2.0;
CGAffineTransform translateRight = CGAffineTransformTranslate(CGAffineTransformIdentity, t, 0.0);
CGAffineTransform translateLeft = CGAffineTransformTranslate(CGAffineTransformIdentity, -t, 0.0);
viewToShake.transform = translateLeft;
[UIView animateWithDuration:0.07 delay:0.0 options:UIViewAnimationOptionAutoreverse|UIViewAnimationOptionRepeat animations:^{
[UIView setAnimationRepeatCount:2.0];
viewToShake.transform = translateRight;
} completion:^(BOOL finished) {
if (finished) {
[UIView animateWithDuration:0.05 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
viewToShake.transform = CGAffineTransformIdentity;
} completion:nil];
}
}];
}