我可能会问别人问过的同样的问题(但它没有回应):
加速第一个UIImageView动画(强制缓存图像)
但是,我的问题是:
我在资源中有60张图片,在timeinterval循环中我会让这些图片动画,每次设置为UIImageView。image the n'th image from resource .
问题是:第一个动画是坏的!当我在同一个UIImageView中再次循环所有图像时,动画是完美的。我们能在UIImageView中预缓存图像吗?
编辑:或者也许我们可以做一些技巧,使动画平滑?
方法[UIImage imageNamed:@""]
缓存图像。UIImageView不会。我在一个有很多图像的应用程序中遇到了一个问题,由于内存不足而崩溃。如果我更改为[UIImage imageWithContentsOfFile:@""]
,不缓存图像。
要预缓存图像,您可以简单地在init方法中为所有需要的图像调用[UIImage imageNamed:@""]
。但是如果你收到一个内存警告图像会被释放
UIImageView不缓存图像,作为[UIImage imageNamed:@""]
。不幸的是,如果您有很多图像,imageNamed将使您的应用程序崩溃,因为它耗尽了内存。
你可以使用[UIImage imageWithContensOfFile:@""]
在NSArray中预加载所有的图像。一旦你有了数组,你就可以做你想做的了!
不,UIImageView不缓存图像。image
属性声明为retain,所以当你设置新图像时,imageView发送release
消息给旧图像,retain
消息给新图像。
动画UIImageView最简单的方法是将图像数组设置为属性animationImages
并调用startAnimating方法
imageView.animationImages = [NSArray arrayWithObjects:[UIImage imageNamed:@"1.png"], ..., nil];
imageView.animationDuration = 2.0f;
[imageView startAnimating];