2013-03-08 1 views
0

хорошо, как сделать любое время анимации для UIViews или UIImageViews в Xcode, но имею в виду, когда пользователь находится в приложении, то animatons шоу в любое время, моя анимация выглядит так:как сделать анимацию в любое время для iOS 6 xcode 4.6?

- (void)showAnimation 
{ 


    [UIImageView beginAnimations:@"EFFECT_SHOW" context:nil]; 
    [UIImageView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIImageView setAnimationDuration:5.0f]; 

    self.imageAnimation.frame = CGRectMake(400, imageAnimation.frame.origin.y, imageAnimation.frame.size.width, imageAnimation.frame.size.height); 
    self.imageAnimation2.frame = CGRectMake(-400, imageAnimation2.frame.origin.y, imageAnimation2.frame.size.width, imageAnimation2.frame.size.height); 

    [UIImageView commitAnimations]; 
} 

&, когда я звоню метод, просто я [self showAnimation] ;, но в viewDidload, просто покажите анимацию один раз, как сделать в любое время ?, мне понадобится «while» quiestion? или я могу в другой пустоте?

благодарит за помощь & привет от La Paz & Santa Cruz de la Sierra - BOLIVIA !!! раскачать!!! n_n '

+0

Не ясно, что вы имеете в виду под «просто показать анимации в один раз, как сделать в любое время?» ? У вас несколько изображений и хотите добавить анимацию ко всем? –

+0

o извините, ну у меня есть 2 изображения, анимация показывает движущиеся влево-> вправо и вправо-> влево, но как я могу показать эту анимацию в любое время? –

+0

в любое время ?? вы хотите одновременно выполнять обе анимации? или нужно продолжать это на всем протяжении? –

ответ

0

просто вызвать метод showAnimation снова после того, как анимация завершена

- (void) showAnimation 
{ 
    //TODO: maybe reset you animation 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView animateWithDuration:5.0f animations:^(){ 
      // define animation 
      self.imageAnimation.frame = CGRectMake(400, imageAnimation.frame.origin.y, imageAnimation.frame.size.width, imageAnimation.frame.size.height); 
      self.imageAnimation2.frame = CGRectMake(-400, imageAnimation2.frame.origin.y, imageAnimation2.frame.size.width, imageAnimation2.frame.size.height); 
     } 
     completion:^(BOOL finished){ 
      // after the animation is completed call showAnimation again 
      [self showAnimation]; 
    }]; 
} 
+0

спасибо, но все еще не работает, по-прежнему не показывает такого бесконечного, я действительно вызывал метод в viewdidload, в другом IBAction из шоу кнопки, но все еще не работает, или я ошибаюсь в чем-то O_o? –

+0

добавить NSLog (@ "showAnimation") в начале метода и рассказать мне, как часто называется метод? вы сбросили анимацию в исходное состояние? что ты видишь? как часто играет анимация? – JeanLuc

+0

Да, продолжает печать «showAnimation», но анимация не работает, только один раз, но позже не показывает ничего: S –

2

Используйте анимации блоков, которые являются частью UIView. У View Programming Guide for iOS есть отличный раздел по анимации.

При вызове метода

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion 

опцию "" Вы, вероятно, хотите, UIViewAnimationOptionAutoreverse.

Например:

[UIView animateWithDuration:5.0f delay:0 options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat animations:^{ 
    self.imageAnimation.frame = CGRectMake(400, imageAnimation.frame.origin.y, imageAnimation.frame.size.width, imageAnimation.frame.size.height); 
    self.imageAnimation2.frame = CGRectMake(-400, imageAnimation2.frame.origin.y, imageAnimation2.frame.size.width, imageAnimation2.frame.size.height); 
} completion:nil]; 

Edit: Да .. это моя вина, это не повторится. Согласно документации ....

UIViewAnimationOptionAutoreverse

Выполнить анимацию назад и вперед. Должен сочетаться с опцией UIViewAnimationOptionRepeat.

Я обновил код, чтобы включить UIViewAnimationOptionRepeat, и он должен работать сейчас.

+0

wow, который работает, но только один раз, как я могу сделать этот процесс не законченным, пока вы не выйдете из приложения, я имею в виду, анимация длится с момента ввода и выхода из приложения полностью, анимация не должна останавливаться, мне нужно создать новая пустота? или где и как я могу это сделать? –

+0

его как бесконечная анимация, которую я хочу –

+0

Да, она должна была быть бесконечной анимацией, я просто испортил ее. Я добавил в соответствующую документацию и исправлю. – DBD