您好我对CGAffineTransform动画完全感到困惑。我想做的就是将一个精灵从右边的位置移动到左边的位置。当它停止时我想“重置”它,即将它移回它开始的地方。如果应用退出(使用多任务处理)我想在开始时重新重置位置并重复动画。
这就是我用来制作动画的内容..
[UIImageView animateWithDuration:1.5
delay:0.0
options:(UIViewAnimationOptionAllowUserInteraction |
UIViewAnimationOptionCurveLinear
)
animations:^(void){
ufo.transform = CGAffineTransformTranslate(ufo.transform, -270, 100);
}
completion:^(BOOL finished){
if(finished){
NSLog(@"ufo finished");
[self ufoAnimationDidStop];
}
}];
据我所知,CGAffineTransforms只是在视觉上使精灵看起来像是被移动但实际上并没有移动它。因此,当我尝试使用
“重置”位置时ufo.center = CGPointMake(355,70);
它没有做任何事情。
如果我打电话
,我确实有一些工作要做ufo.transform = CGAffineTransformTranslate(ufo.transform,270,-100);
重置。问题是如果我在应用程序中途退出应用程序,那么当它重新启动时它不一定从头开始并且它没有到正确的位置,它基本上是疯了!
有没有办法只删除应用于它的任何变换?我正在考虑使用一个计时器,但这种方法应该有效,这似乎很愚蠢。我已经挣扎了一段时间,所以任何帮助都会非常感激。
由于
答案 0 :(得分:4)
将变换应用于视图实际上不会更改视图的中心或边界;它只是改变了视图在屏幕上显示的方式。您希望将转换设置回CGAffineTransformIdentity以确保它看起来像“正常”。您可以在开始动画之前将其设置为该动画并将其设置为您希望动画制作的动画。