2010-10-14 4 views
1

У меня возникли трудности с работой с блоками анимации. Я пытаюсь перенести первую анимацию альфа-изображения, чтобы он вспыхнул, а затем через 10 секунд исчезнет. firstAnimation затем переходит к secondAnimation, который делает то же самое только с другим изображением. процесс повторяется бесконечно.анимация блокирует бесконечный цикл - iphone

Я работаю с этим некоторое время и не могу заставить его повторять бесконечно. Еще одна проблема, с которой я столкнулся, - это задержка анимации процесса, так что она начинается через 20 секунд, достаточно времени для воспроизведения аудиофайла.

- (void) firstAnimation { 
      UIViewAnimationOptions options = UIViewAnimationOptionCurveLinear; 

      [UIView animateWithDuration:1.0 delay:10.0 options:options animations:^ 
      { 
        myImage.alpha = 0.0; 
        myImage.alpha = 1.0; 

      } 

        completion:^(BOOL finished){ 

        [self secondAnimation]; 
      } 
      ]; 

    } 

благодарит как всегда за любую помощь. Я искал пример кода и обучающих программ, но все, что я нашел, это в основном то, что я делаю в коде выше.

ответ

1

Я думаю, вам нужно установить начальное значение вашей альфы вне блока анимации и только значение, которое вы хотите оживить внутри блока.

UIViewAnimationOptions options = UIViewAnimationOptionCurveLinear; 
myImage.alpha = 0.0; 
[UIView animateWithDuration:1.0 delay:10.0 options:options animations:^ 
     { 
       myImage.alpha = 1.0; 

     } 
+0

спасибо! которые работали красиво. Знаете ли вы, как я мог бы положить это на бесконечный цикл? еще раз спасибо – hanumanDev

+0

Вы должны быть в состоянии достичь этого, цепляя функции так, как вы это делали выше. Первый анимационный вызов второй, который вызывает первый и т. Д. Более сложный, чем это, и я бы предложил использовать NSTimer для вызова функции firstanimation каждые X секунд для бесконечности. – Ben

+0

ОК, спасибо. возможно, мне следует использовать NSTimer, потому что я хочу, чтобы анимации начинались после воспроизведения аудиоклипа. – hanumanDev

1
animateImageWithCount:(int)aCount{ 
    if(aCount >= [imageArray count]){ 
     NSLog(@"Done all images"); 
     return; 
    } 

    UIImage *myImage = [ImageArray objectAtIndex:aCount]; 
    UIViewAnimationOptions options = UIViewAnimationOptionCurveLinear; 

    myImage.alpha = 0.0; 
    [UIView animateWithDuration:1.0 delay:10.0 options:options animations:^{ 
     myImage.alpha = 1.0; 
    } 
    completion:^(BOOL finished){ 
     [self animateImageWithCount:(aCount+1)]; 
    }]; 
} 
+0

Ничего себе. Вы серьезно спасли меня некоторое время. Я искал часы для решения, а ваше красиво. Спасибо! – CoderMarkus

Смежные вопросы