在动画持续时间的一半停止UIView中某个对象的动画

时间:2012-02-22 02:58:08

标签: ios animation uiview

在我的代码中,我希望else部分之前的部分是动画的,但是部分在else部分内部。 if语句的第一部分是在第一次调用函数时执行的,在该部分内部有一个定时器设置,它将在1秒后调用该函数,这是动画的一半,但我不想要这个最后一部分要动画我只想让它立即发生。

-(void)performAnimationToRight
{
if (!timer){

[UIView beginAnimations:@"Move" context:nil];
[UIView setAnimationDuration:2];
[UIView setAnimationBeginsFromCurrentState:YES];


card0.center = CGPointMake(card0.center.x+388, card0.center.y);
card1.center = CGPointMake(card1.center.x+388, card1.center.y);
card2.center = CGPointMake(card2.center.x+388, card2.center.y);


[UIView commitAnimations];

timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(performAnimationToRight) userInfo:nil repeats:NO];


}else{

card2.frame = CGRectMake(-330,card2.frame.origin.y, card2.frame.size.width, card2.frame.size.height);

timer = nil;

}

}

如何防止此部分变得动画化。

  card2.frame = CGRectMake(-330,card2.frame.origin.y, card2.frame.size.width, card2.frame.size.height); 

感谢。

1 个答案:

答案 0 :(得分:0)

使用积木怎么样?

[UIView animateWithDuration:2 animations:^{

  card0.center = CGPointMake(card0.center.x+388, card0.center.y);
  card1.center = CGPointMake(card1.center.x+388, card1.center.y);
  card2.center = CGPointMake(card2.center.x+388, card2.center.y);
} 
completion:^(BOOL finished) {

  card2.frame = CGRectMake(-330,card2.frame.origin.y, card2.frame.size.width, card2.frame.size.height);
}];