Остановить анимацию на определенном объекте в UIView на полпути во время анимации - PullRequest
0 голосов
/ 22 февраля 2012

В моем коде я хочу, чтобы часть перед остальной частью была анимирована, но часть внутри остальной части.Первая часть предложения if else выполняется, когда функция вызывается впервые, и внутри этой части есть набор таймеров, который будет вызывать функцию через 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 голосов
/ 27 июля 2012

Как насчет использования блоков?

[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);
}];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...