как выполнить анимацию UIView с непрерывной переработкой

#iphone #animation

#iPhone #Анимация

Вопрос:

Следующий код перемещает imageview справа налево один раз, но я хочу делать это непрерывно. переместите справа налево, затем вернитесь влево за пределы экрана и снова повторите справа налево.

 imageview=[[UIImageView alloc] initWithFrame:CGRectMake(320, 200, 2635, 200)];

image=[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"animal" ofType:@"png"]]; 
               [imageview setImage:image];

[self.view addSubview:imageview];

[UIView beginAnimations:@"MoveAndStrech" context:nil];
[UIView setAnimationDuration:40];     //30
[UIView setAnimationBeginsFromCurrentState:YES];
CGPoint p, b, a, c, d,e;
p.x = 0;
p.y = 200;

imageview.center=p;

[UIView commitAnimations];  
  

Комментарии:

1. вы говорите о переходе туда и обратно или о прямом переходе из крайнего левого положения в крайнее правое?

2. не туда-сюда, просто повторяйте один и тот же шаблон (справа налево) снова и снова.

3. согласно его редактированию, он не хочет автозаполнения

Ответ №1:

Добавьте следующие строки:

 [UIView setAnimationRepeatCount: HUGE_VAL];
[UIView setAnimationRepeatAutoreverses: YES];
  

Или, если вы нацелены на iOS 4.0 , тогда предпочтительнее анимация на основе блокировок:

 [UIView animateWithDuration:40.0f
                      delay:0.0f
                    options: UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionBeginFromCurrentState
                 animations: ^(void){imageview.center = CGPointMake(0, 200);}
                 completion:NULL];
  

Комментарии:

1. измените setAnimationRepeatAutoreverses на NO, и вы можете согласиться с этим ответом @user482473