2011-12-07 3 views
0

Ищет общий совет. У меня есть произвольное число UIImages с ссылками, хранящимися в массиве. Я хочу, чтобы первое изображение полностью исчезло, затем следующее изображение исчезло, оставалось на пару секунд, а затем исчезало. И так далее для каждого изображения в массиве. Таким образом, анимация циклически перемещается по нескольким представлениям, где каждый вид исчезает, а затем исчезает в следующем. Анимация повторяется бесконечно. Надеюсь, я прояснился. Я не хочу перекрестного растворения, когда одно изображение исчезает в другом.Как затухать или исчезать произвольное количество UIImages в UIImageView

В идеале, я хотел бы использовать тот же UIImageView и просто заменить изображение, как только предыдущее изображение исчезло (т. Е. Свойство альфа, установленное на 0.0).

Мне любопытно, как это сделать, и если я буду использовать методы анимации UIView или использовать Core Animation.

Благодарим за помощь!

ответ

1

Вы можете использовать что-то вроде этого:

NSArray* images.. //some initialization code somewhere at your class 
NSUInteger currentIndex = 5; //lets assume you have some property for storing your current image index 

-(void)animateToImageAtIndex:(NSUInteger)targetIndex{ 
    [UIView animateWithDuration:0.5 delay:1.0 options:nil animations:^{ 
     yourImageView.alpha = 0.0; 
    } completion:^(BOOL finished) { 
     yourImageView.image = [images objectAtIndex:++currentIndex]; 
     yourImageView.alpha = 1.0; 
     if(currentIndex < targetIndex){ 
      [self animateToImageAtIndex:targetIndex]; 
     } 
    }]; 
} 

тогда, когда вам это нужно просто вызвать [self animateToImageAtIndex:*someTargetIndex*]; Заметим, однако, что этот код не имеют никакой проверки процедуры для рамки массива данных, так как это зависит от конкретной реализации хранилище.

+0

эй вы бьете меня на 36 секунд :) – tiltem

+0

Я думаю, что я видел вопрос немного раньше :) – Ariel

1

Не проверял, но что-то вроде этого следует сделать это:

-(void)imageAnimation{ 
    [UIView animateWithDuration:.5 animations:^{ 
     myImageView.alpha = 1.0; 
    } completion:^(BOOL finished){ 
     [UIView animateWithDuration:.5 delay:2.0 options:nil animations:^{ 
      myImageView.alpha = 0.0; 
     } completion:^(BOOL finished){ 
      myImageView.image = [imgArray objectAtIndex:currentIndex%[imgArray count]]; 
      currentIndex++; 
      [self imageAnimation]; 
     }]; 
    }]; 
} 
Смежные вопросы