我有一个带有人脸图像的 UIImageView,然后我将旋转变换动画应用于该 UIImageView。
self.transform = CGAffineTransformRotate(self.transform, M_PI / 16);
[UIView animateWithDuration:0.5
delay:0.0
options:UIViewAnimationOptionRepeat|UIViewAnimationOptionAutoreverse
animations:^{
self.transform = CGAffineTransformRotate(self.transform, -1 * (M_PI/8));
}
completion:^(BOOL completed) {}];
然后我有另一个在 y 轴上上下移动的相同面部图像的动画。
[UIView animateWithDuration:0.2
delay:0.0
options:UIViewAnimationOptionRepeat|UIViewAnimationOptionAutoreverse
animations:^{
self.transform = CGAffineTransformMakeTranslation(0, 10);
}
completion:^(BOOL completed){}];
执行第一个动画后,我需要更改 UIImageView 位置,然后启动第二个动画。
我有一个 stopAnimation 方法,可以删除动画、重置变换并设置 UIImageView 的位置。
-(void)stopAnimation:(NSInteger)currentAnimation{
[self.layer removeAllAnimations];
[self setTransform:CGAffineTransformIdentity];
[self setFrame:initFrame];
CGPoint position = [self getNextPosition:currentAnimation];
//[self setTransform:CGAffineTransformMakeTranslation(0, 0)];
CGRect frame = self.frame;
frame.origin.x = position.x;
frame.origin.y = position.y;
self.frame = frame;
}
-(CGPoint)getNextPosition:(NSInteger)currentAnimation{
CGPoint position = [[positions objectAtIndex:(currentAnimation-1)] CGPointValue];
NSLog(@"Current animation:%u %f:%f", currentAnimation,position.x,position.y);
return position;
}
如果我在没有动画的情况下执行位置更改,则 UIImageView 位于屏幕的正确位置,但如果我使用动画运行,则动画效果很好,但 UIImageView 位置错误。
我尝试对 UIImageView 的中心进行相同的设置,但我遇到了同样的问题。