Ios UIImageView在多个图像之间的转换
我正在使用下面的代码在短时间内更改UIImageView的图像。如您所见,正在使用的图像存储在一个数组中 问题是,无论我设置了什么“持续时间”或“延迟”,imageview几乎都会立即更改为阵列中的最后一幅图像 我应该使用主线程在每个图像转换之间添加延迟吗Ios UIImageView在多个图像之间的转换,ios,animation,uiimageview,objective-c-blocks,Ios,Animation,Uiimageview,Objective C Blocks,我正在使用下面的代码在短时间内更改UIImageView的图像。如您所见,正在使用的图像存储在一个数组中 问题是,无论我设置了什么“持续时间”或“延迟”,imageview几乎都会立即更改为阵列中的最后一幅图像 我应该使用主线程在每个图像转换之间添加延迟吗 //////////////////////////////////////////////////////////////// animationCount = 0; imageArray =[NSMutableArray new];
////////////////////////////////////////////////////////////////
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;
}
}];
}
////////////////////////////////////////////////////////////////
animationCount=0;
imageArray=[NSMutableArray新建];
[imageArray addObject:[UIImage ImageName:@“gauge1final.png”];
[imageArray addObject:[UIImage ImageName:@“gauge2final.png”];
[imageArray addObject:[UIImage ImageName:@“gauge3final.png”];
[imageArray addObject:[UIImage ImageName:@“gauge4final.png”];
[imageArray addObject:[UIImage ImageName:@“gauge5final.png”];
[自我多级化];
////////////////////////////////////////////////////////////////
-(空)多级{
[UIView animateWithDuration:5.0
延迟:5.0
选项:UIViewAnimationOptionTransitionCrossSolve
动画:^
{
self.gauge.image=[imageArray objectAtIndex:animationCount];
}
完成:^(布尔完成){
animationCount++;
if(animationCount
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];
UIImageView的image属性不会设置动画。您需要做的是将2个UIImageView小部件一个接一个地放在一起。然后,您可以在每次转换时将其alpha属性从0设置为1(反之亦然)。如果使用多个屏幕进行相同的动画,最好创建一个.plist文件,然后在项目中的任何位置使用该文件。步骤如下:
@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];
NSDictionary*picturesDictionary=[NSDictionary Dictionary WithContentsOfFile:[[NSBundle mainBundle]pathForResource:@“plist”类型的“photeArray]”;
NSArray*imageNames=[picturesDictionary objectForKey:@“照片”];
NSMutableArray*图像=[[NSMutableArray alloc]init];
对于(inti=0;该方法有任何延迟属性,如UIView动画?