UIImageview Animation开始使用for-in循环和animation延迟

我需要animation的UIimageview,当我开始animation发生很长一段时间后,我发现内存泄漏的地方,在不同的图像视图的连续animation的时间。 我所需要做的是在滚动视图中有n个UIviews,每个视图都有一个自定义button。 当该button被选中时,animation发生,如果animation正在进行,如果用户点击buttonanimation将继续,它不需要再次开始

这是我的代码

for (int i=0; i<AlphabetArray.count; i++) { UIView *view=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 300, 200)]; view.backgroundColor=[UIColor grayColor]; view.tag=i+1; [self.scrollView addSubview:view]; UIImageView *image=[[UIImageView alloc]initWithFrame:CGRectMake(200, 50, 400, 400)]; [image setImage:[[animationArray objectAtIndex:i]objectAtIndex:0]]; image.tag=i+1; [view addSubview:image]; UIButton *animatebutton=[[UIButton alloc]initWithFrame:CGRectMake(200, 50, 336, 310)]; animatebutton.tag=i+1; [animatebutton addTarget:self action:@selector(makeAnimation:) forControlEvents:UIControlEventTouchUpInside]; //[animatebutton setImage:[UIImage imageNamed:@"NewtDance_mov_0.png"] forState:UIControlStateNormal]; [view addSubview:animatebutton]; } -(void)makeAnimation:(UIImageView *)sender { UIView *tagView=(UIView *)[self.view viewWithTag:sender.tag]; for (UIImageView * imageview in [tagView subviews]) { NSLog(@"Yes %d",imageview.tag); if ([imageview isKindOfClass:[UIImageView class]]) { if ([imageview isAnimating]) { NSLog(@"Animation Happens"); } else{ imageview.animationDuration=3.0; imageview.animationImages=[animationArray objectAtIndex:sender.tag-1]; imageview.animationRepeatCount=2; imageview.tag=sender.tag; [imageview startAnimating]; } } } NSLog(@"OK"); } 

有了这个代码,我可以实现我的要求。 但由于使用了for-in循环,所以animation开始时间很晚

处理这个最好的方法。 使用UIImageViewanimationImages属性。

  1. 使用Image的UIImage对象创buildNSMutableArray对象。
  2. 将Images数组设置为UIImageView animationImages属性
    [imageView setAnimationImages:imagesArray]

  3. [imageView startAnimating]开始animation。

  4. [imageView stopAnimating]停止animation。
    检查文件的更多细节。

有关更多详细信息, 请检查。 。