用循环顺序显示图像

我得到了5张图片的NSArray。 我想在一个循环中一个接一个地显示它们。 我的代码:

NSArray *tabImage = [[NSArray alloc] init]; tabImage = [[NSArray arrayWithObjects: [UIImage imageNamed:@"picto_1.png"], [UIImage imageNamed:@"picto_2.png"], [UIImage imageNamed:@"picto_3.png"], [UIImage imageNamed:@"picto_4.png"], [UIImage imageNamed:@"picto_5.png"], nil] retain]; int var = 0; var = indexPath.row; for (int var = 0; var < 20; var++) { pictoImage.image = [tabImage objectAtIndex:(var % 5)]; } 

我一直都有相同的画面。

感谢帮助。

我猜pictoImage是一个UIImageView 。 在这种情况下,请查看类引用 ,特别是animationImages属性。

  pictoImage.animationImages = [NSArray arrayWithObjects: [UIImage imageNamed:@"picto_1.png"], [UIImage imageNamed:@"picto_2.png"], [UIImage imageNamed:@"picto_3.png"], [UIImage imageNamed:@"picto_4.png"], [UIImage imageNamed:@"picto_5.png"], nil]; // How many seconds it should take to go through all images one time. pictoImage.animationDuration = 5.0; // How many times to repeat the animation (0 for indefinitely). pictoImage.animationRepeatCount = 4; [pictoImage startAnimating]; 

你没有给框架时间实际渲染图像的窗口。

所有的更新正在合并为一个“setNeedsDisplay”调用。 在运行循环的下一个迭代中,图像视图将使用您在循环中设置的最后一个图像进行渲染。

如果pictoImage是一个UIImageView ,@Hagelin的答案是最好的select。 现在,如果pictoImage不是一个UIImageView对象,那么你将不得不采取不同的方法,这绝对不是一个循环。

用所需的时间间隔设置NSTimer,并调用更新pictoImage迭代tabImages 。 它应该是这样的:

 - (void)setup { ... [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(updatePictoImage:) userInfo:nil repeats:YES]; ... } - (void)updatePictoImage:(NSTimer*)theTimer { static int i = 0; if ( i > 20 ) { pictoImage.image = [tabImages objectAtIndex:(i % 5)]; } else { [theTimer invalidate]; } } 

这应该更新pictoImage每2秒与tabImages图像。

你不打印任何东西

你在连续20次重写你的pictoImage的内容,当var是19的时候,把它留给最后一个任务,所以它应该是picto_4.png。

另外,整个var声明根本没什么意义…首先你将它设置为0 ,然后你将它设置为indexPath.row ,并在循环中完全重新定义….