如何在UIImageView中淡入/淡出任意数量的UIImages

时间:2011-12-07 22:08:36

标签: iphone ios cocoa-touch uiimageview core-animation

寻求一般性建议。我有一个任意数量的UIImages s,引用存储在一个数组中。我希望第一张图像完全淡出,然后下一张图像淡入,保持几秒钟,然后淡出。对于阵列中的每个图像等等。因此,动画会循环显示每个视图淡出的多个视图,然后在下一个视图中淡入淡出。动画无限重复。我希望我很清楚。我不希望交叉溶解转换,其中一个图像淡入另一个图像。

理想情况下,我想使用相同的UIImageView,只需在前一个图像淡出后替换图像(即alpha属性设置为0.0)。

我很好奇实现这一目标的最佳方法,如果我应该使用UIView的动画方法或使用核心动画。

感谢您的帮助!

2 个答案:

答案 0 :(得分: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*]; 但请注意,此代码没有用于数据数组边界的检查例程,因为它取决于存储的具体实现。

答案 1 :(得分: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];
        }];
   }];
 }