我使用以下代码在短时间内更改UIImageView的图像。正如您所见,正在使用的图像存储在一个数组中。
问题是,无论什么时间长短'或者'延迟'我设置,imageview几乎立即改变到数组中的最后一个图像。
我应该使用主线程在每次图像转换之间添加延迟吗?
////////////////////////////////////////////////////////////////
animationCount = 0;
imageArray =[NSMutableArray new];
[imageArray addObject:[UIImage imageNamed:@"gauge1final.png"]];
[imageArray addObject:[UIImage imageNamed:@"gauge2final.png"]];
[imageArray addObject:[UIImage imageNamed:@"gauge3final.png"]];
[imageArray addObject:[UIImage imageNamed:@"gauge4final.png"]];
[imageArray addObject:[UIImage imageNamed:@"gauge5final.png"]];
[self multiStageAnimate];
////////////////////////////////////////////////////////////////
-(void) multiStageAnimate{
[UIView animateWithDuration:5.0
delay:5.0
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^
{
self.gauge.image = [imageArray objectAtIndex:animationCount];
}
completion:^(BOOL finished){
animationCount ++;
if(animationCount < imageArray.count){
[self multiStageAnimate];
}
else
{
animationCount = 0;
}
}];
}
答案 0 :(得分:8)
UIImageView
确实有一种机制可以满足您的需求。
UIImageView *imageView = [[UIImageView alloc] init];
imageView.animationImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"image1"],
[UIImage imageNamed:@"image2"],
[UIImage imageNamed:@"image3"], nil];
imageView.animationRepeatCount = 0; // 0 means repeat without stop.
imageView.animationDuration = 1.5; // Animation duration
[imageView startAnimating];
答案 1 :(得分:0)
如果您使用具有相同动画的多个屏幕,最好创建一个 .plist 文件,然后在项目的任何位置使用它。步骤如下:
首先,生成一个.plist文件文件 - &gt;新文件 - &gt;资源 - &gt;属性列表
编写如下代码:
的 ViewController.h 强>
@property (weak, nonatomic) IBOutlet UIImageView *dataImageView;
<强> ViewController.m 强>
NSDictionary *picturesDictionary = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"PhotesArray" ofType:@"plist"]];
NSArray *imageNames = [picturesDictionary objectForKey:@"Photos"];
NSMutableArray *images = [[NSMutableArray alloc] init];
for (int i=0; i<[imageNames count]; i++) {
[images addObject:[UIImage imageNamed:[imageNames objectAtIndex:i]]];
}
//Normal animation
self.dataImageView.animationImages = images;
self.dataImageView.animationDuration = 5.0;
[self.dataImageView startAnimating];
答案 2 :(得分:-2)
UIImageView的图像属性不会动画。你需要做的是将2个UIImageView小部件放在另一个之上。然后,您可以在每次转换时将其alpha属性从0设置为1(反之亦然)。