我的故事板上有一个UIImageView,该UIImageView链接到代码中的插座。运行代码时,它仅显示情节提要显示的静态图片,而不显示我以编程方式创建的动画。有什么想法吗?
for(int i=0; i<4; i++) {
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"loading%d",i]];
[self.images addObject:image];
}
self.loadingView.animationImages = self.images;
self.loadingView.animationDuration = 2;
self.loadingView.animationRepeatCount = 1;
[self.loadingView startAnimating];
注意:loadingView是UIImageView,图像是NSMutableArray。
如果要创建运行时数组,可以像这样使用。
NSMutableArray *images = [[NSMutableArray alloc] init];
for (int i = 1 ; i < 4; i++) {
[images addObject:[UIImage imageNamed:[NSString stringWithFormat: @"loading%d.jpg", i]]];
}
self.loadingView.animationImages = images;
self.loadingView.animationDuration = 2;
self.loadingView.animationRepeatCount = 1;
[self.loadingView startAnimating];
希望这对您有帮助。对我来说很好。
问题是此行:
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"loading%d",i]]
格式字符串错误。您可能有名为的图片,例如loading1.png
。但是您的格式字符串仅给出loading1
。不适用于imageNamed:
。因此,您需要修复格式字符串以提供图像的全名。
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"loading%d.png",i]]
或其他。使用NSLog来确保图像名称正确无误!!
一种更好的方法是改用动画image,但是:
UIImage* im = [UIImage animatedImageNamed:@"loading" duration:2];
将自动找到所有的loading1.png
,loading2.png
等并创建图像并开始自动设置动画效果。
我建议您像这样直接使用数组。
NSArray *images = [[NSArray alloc] initWithObjects:
[UIImage imageNamed:@"1.jpg"],
[UIImage imageNamed:@"2.jpg"],
nil];
self.loadingView.animationImages = images;
self.loadingView.animationDuration = 2;
self.loadingView.animationRepeatCount = 1;
[self.loadingView startAnimating];