Как добавить / исчезнуть произвольное количество UIImages в UIImageView - PullRequest
0 голосов
/ 08 декабря 2011

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

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

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

Спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

еще не тестировал, но что-то вроде этого должно это сделать:

-(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];
        }];
   }];
 }
1 голос
/ 08 декабря 2011

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

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*]; Обратите внимание, однако, что в этом коде нет подпрограмм проверки границ массива данных, поскольку это зависит от конкретногореализация хранилища.

...