Ios 在最后一个图像上停止UIimageview动画 NSArray*imageNames=@[@“2_00000.png”、@“2_00001.png”、@“2_00002.png”、@“2_00003.png”, @“2_00004.png”、@“2_00005.png”、@“2_00006.png”、@“2_00007.png”, @“2_00008.png”、@“2_00009.png”、@“2_00010.png”、@“2_00011.png”, @“2_00012.png”、@“2_00013.png”、@“2_00014.png”、@“2_00015.png”, @“2_00016.png”、@“2_00017.png”、@“2_00018.png”、@“2_00019.png”, @“2_00020.png”、@“2_00021.png”、@“2_00022.png”、@“2_00023.png”, @“2_00024.png”、@“2_00025.png”、@“2_00026.png”、@“2_00027.png”, @“2_00028.png”、@“2_00029.png”、@“2_00030.png”、@“2_00031.png”, @“2_00032.png”、@“2_00033.png”、@“2_00034.png”、@“2_00035.png”, @“2_00036.png”、@“2_00037.png”、@“2_00038.png”、@“2_00039.png”, @“2_00040.png”、@“2_00041.png”、@“2_00042.png”、@“2_00043.png”, @“2_00044.png”、@“2_00045.png”、@“2_00046.png”、@“2_00047.png”, @“2_00048.png”、@“2_00049.png”、@“2_00050.png”、@“2_00051.png”, @“2_00052.png”、@“2_00053.png”、@“2_00054.png”、@“2_00055.png”, @“2_00056.png”、@“2_00057.png”、@“2_00058.png”、@“2_00059.png”, @“2_00060.png”、“2_00061.png”、“2_00062.png”、“2_00063.png”]; NSMutableArray*图像=[[NSMutableArray alloc]init]; 对于(int i=1;i
首先将animationRepeatCount设置为1,并在启动动画后创建一个在此块中动画持续时间后激发的块,将animationImageView图像设置为最后一个图像Ios 在最后一个图像上停止UIimageview动画 NSArray*imageNames=@[@“2_00000.png”、@“2_00001.png”、@“2_00002.png”、@“2_00003.png”, @“2_00004.png”、@“2_00005.png”、@“2_00006.png”、@“2_00007.png”, @“2_00008.png”、@“2_00009.png”、@“2_00010.png”、@“2_00011.png”, @“2_00012.png”、@“2_00013.png”、@“2_00014.png”、@“2_00015.png”, @“2_00016.png”、@“2_00017.png”、@“2_00018.png”、@“2_00019.png”, @“2_00020.png”、@“2_00021.png”、@“2_00022.png”、@“2_00023.png”, @“2_00024.png”、@“2_00025.png”、@“2_00026.png”、@“2_00027.png”, @“2_00028.png”、@“2_00029.png”、@“2_00030.png”、@“2_00031.png”, @“2_00032.png”、@“2_00033.png”、@“2_00034.png”、@“2_00035.png”, @“2_00036.png”、@“2_00037.png”、@“2_00038.png”、@“2_00039.png”, @“2_00040.png”、@“2_00041.png”、@“2_00042.png”、@“2_00043.png”, @“2_00044.png”、@“2_00045.png”、@“2_00046.png”、@“2_00047.png”, @“2_00048.png”、@“2_00049.png”、@“2_00050.png”、@“2_00051.png”, @“2_00052.png”、@“2_00053.png”、@“2_00054.png”、@“2_00055.png”, @“2_00056.png”、@“2_00057.png”、@“2_00058.png”、@“2_00059.png”, @“2_00060.png”、“2_00061.png”、“2_00062.png”、“2_00063.png”]; NSMutableArray*图像=[[NSMutableArray alloc]init]; 对于(int i=1;i,ios,objective-c,uiimageview,xcode5,Ios,Objective C,Uiimageview,Xcode5,首先将animationRepeatCount设置为1,并在启动动画后创建一个在此块中动画持续时间后激发的块,将animationImageView图像设置为最后一个图像 NSArray *imageNames = @[@"2_00000.png", @"2_00001.png", @"2_00002.png", @"2_00003.png", @"2_00004.png", @"2_00005.png", @"2_00006.png",
NSArray *imageNames = @[@"2_00000.png", @"2_00001.png", @"2_00002.png", @"2_00003.png",
@"2_00004.png", @"2_00005.png", @"2_00006.png", @"2_00007.png",
@"2_00008.png", @"2_00009.png", @"2_00010.png", @"2_00011.png",
@"2_00012.png", @"2_00013.png", @"2_00014.png", @"2_00015.png",
@"2_00016.png", @"2_00017.png", @"2_00018.png", @"2_00019.png",
@"2_00020.png", @"2_00021.png", @"2_00022.png", @"2_00023.png",
@"2_00024.png", @"2_00025.png", @"2_00026.png", @"2_00027.png",
@"2_00028.png", @"2_00029.png", @"2_00030.png", @"2_00031.png",
@"2_00032.png", @"2_00033.png", @"2_00034.png", @"2_00035.png",
@"2_00036.png", @"2_00037.png", @"2_00038.png", @"2_00039.png",
@"2_00040.png", @"2_00041.png", @"2_00042.png", @"2_00043.png",
@"2_00044.png", @"2_00045.png", @"2_00046.png", @"2_00047.png",
@"2_00048.png", @"2_00049.png", @"2_00050.png", @"2_00051.png",
@"2_00052.png", @"2_00053.png", @"2_00054.png", @"2_00055.png",
@"2_00056.png", @"2_00057.png", @"2_00058.png", @"2_00059.png",
@"2_00060.png", @"2_00061.png", @"2_00062.png", @"2_00063.png"];
NSMutableArray *images = [[NSMutableArray alloc] init];
for (int i = 1; i < imageNames.count; i++) {
[images addObject:[UIImage imageNamed:[imageNames objectAtIndex:i]]];
}
// Normal Animation
UIImageView *animationImageView = [[UIImageView alloc] initWithFrame:CGRectMake(-6, 40, 200, 1034)];
animationImageView.animationImages = images;
animationImageView.animationDuration = 2;
animationImageView.animationRepeatCount = 0;
[self.view addSubview:animationImageView];
[animationImageView startAnimating];
您可以使用
UIView
的transitionWithView:duration:options:animation:completion:
为您的UIImageView
设置动画
dispatch_time_t dispatchAfter = dispatch_time(DISPATCH_TIME_NOW, animationImageView.animationDuration * NSEC_PER_SEC);
dispatch_after(dispatchAfter, dispatch_get_main_queue(), ^(void){
animationImageView.image = [images lastObject];
});
您可以使用这种递归方法,在完成日志中再次调用该方法,并通过剩余的UIImages
,这样在最后一次UIImages
时停止应该不会有问题
我还建议您以以下方式从资源文件夹动态加载UIImages
:
- (void)animatePictureTransition:(NSMutableArray *)arrayImages{
[UIView transitionWithView:imageViewButton
duration:1.0
options:UIViewAnimationOptionTransitionFlipFromRight
animations:^{
UIImage *newImage = (UIImage *)arrayImages.firstObject;
imageViewButton.image = newImage;
} completion:^(BOOL finished){
[arrayImages removeObjectAtIndex:0];
if(arrayImages.count) {
[self animatePicturesTransition:arrayImages];
}
}];
}
-(NSMutableArray*)getImagesWithSuffix:(NSString*)开始和结束后缀:(NSString*)结束{
NSMutableArray*imageArray=[[NSMutableArray alloc]init];
对于(int i=1;i<100;i++){
NSString*文件名=[NSString stringWithFormat:@“%@%d%@.png”,开始,i,结束];
if([self-fileExistsInProject:fileName]){
[imageArray addObject:[UIImage ImageName:fileName]];
}否则{
打破
}
}
返回图像阵列;
}
始终编写UIImages
的所有名称需要花费大量时间,可能会导致任何问题。这样,你只需对图片进行排序,就可以循环浏览
要使用此代码,请创建
NSMutableArray
的类别
,您就可以使用它了 如果在开始动画之前知道动画重复计数
- (NSMutableArray *)getImagesWithSuffix:(NSString *)start andEndSuffix:(NSString *)end{
NSMutableArray *imageArray = [[NSMutableArray alloc] init];
for (int i = 1; i < 100; i++) {
NSString *fileName = [NSString stringWithFormat:@"%@%d%@.png", start, i, end];
if([self fileExistsInProject:fileName]){
[imageArray addObject:[UIImage imageNamed:fileName]];
} else {
break;
}
}
return imageArray;
}
animationImageView.animationRepeatCount = 0 //infinite loop
用于动态停止动画
animationImageView.animationRepeatCount = 1 //For 1 loop
animationImageView.image = animationImageView.animationImages.lastObject;
当需要停止动画时
- (NSMutableArray *)getImagesWithSuffix:(NSString *)start andEndSuffix:(NSString *)end{
NSMutableArray *imageArray = [[NSMutableArray alloc] init];
for (int i = 1; i < 100; i++) {
NSString *fileName = [NSString stringWithFormat:@"%@%d%@.png", start, i, end];
if([self fileExistsInProject:fileName]){
[imageArray addObject:[UIImage imageNamed:fileName]];
} else {
break;
}
}
return imageArray;
}
animationImageView.animationRepeatCount = 0 //infinite loop
这条线有问题
[animationImageView stopAnimating];
animationImageView.image = animationImageView.animationImages.lastObject;
通过设置animationRepeatCount=0,默认情况下其设置为无限。
如果你想让它停在最后一个图像,你可以去
animationImageView.animationRepeatCount = 0;
hacky方式:在时间=imageCount时停止动画*animationDuration@m.eldehairy:谢谢,它有点工作,但动画不工作,它只是显示最后一幅图像。是将停止并显示最后一幅图像的任何其他图像序列动画方法。你能一步一步地解释一下吗。谢谢你吃动画总是有点棘手。不能在for循环中循环,必须在完成块中处理,因为这是唯一知道动画真正停止的地方。