[英]Change the animation images of a UIImageView
在我的iPhone应用程序的viewDidLoad方法中,我具有以下代码:
zombie[i].animationImages = zombieImages;
zombie[i].animationDuration = 0.8/zombieSpeed[i];
zombie[i].animationRepeatCount = -1;
[zombie[i] startAnimating];
稍后在应用程序中,将调用以下代码:
[zombie[i] stopAnimating];
zombie[i] = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"zh.png"]];
zombie[i].animationImages = flyingZombieImages;
zombie[i].animationDuration = 0.8/zombieSpeed[i];
zombie[i].animationRepeatCount = -1;
[zombie[i] startAnimating];
这会导致应用程序崩溃,并在行zombie[i].animationImages = flyingZombieImages;
flyingZombieImages
使用以下代码初始化:( zombieImages
以相同的方式初始化)
NSMutableArray *flyingZombieImages = [NSMutableArray array];
for (NSUInteger i=1; i <= 29; i++) {
NSString *imageName = [NSString stringWithFormat:@"flzom%d.png", i];
[flyingZombieImages addObject:[UIImage imageNamed:imageName]];
}
为什么会这样呢? 有解决方法吗?
正如Dima提到的flyingZombieImages可能未正确初始化,这导致了崩溃。 但是,当您创建UIImageView的新实例时,还有另一个问题:
zombie[i] = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"zh.png"]];
至此,您已经有了对存储在此变量中的旧UIImageView的引用。 您正在丢失对其的引用,并且很可能会泄漏其内存。 您还希望从视图层次结构中删除旧的UIImageView并添加新的UIImageView。
更好的方法是使用原始UIImageView并通过将以下行替换为来更改其图像:
zombie[i].image = [UIImage imageNamed:@"zh.png"];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.