寻求一般性建议。我有一个任意数量的UIImages
s,引用存储在一个数组中。我希望第一张图像完全淡出,然后下一张图像淡入,保持几秒钟,然后淡出。对于阵列中的每个图像等等。因此,动画会循环显示每个视图淡出的多个视图,然后在下一个视图中淡入淡出。动画无限重复。我希望我很清楚。我不希望交叉溶解转换,其中一个图像淡入另一个图像。
理想情况下,我想使用相同的UIImageView
,只需在前一个图像淡出后替换图像(即alpha属性设置为0.0)。
我很好奇实现这一目标的最佳方法,如果我应该使用UIView
的动画方法或使用核心动画。
感谢您的帮助!
答案 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];
}];
}];
}