用循环顺序显示图像
我得到了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
,并在循环中完全重新定义….