UIImageView不会仅为静态图像设置动画

时间:2013-04-05 21:19:20

标签: ios objective-c animation 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,images是NSMutableArray。

3 个答案:

答案 0 :(得分:2)

如果你想制作运行时数组,可以这样使用。

  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];

希望这会对你有所帮助。它对我来说很好。

答案 1 :(得分:0)

我建议您直接使用数组。

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];

希望这会对你有所帮助。

答案 2 :(得分:0)

问题在于这一行:

UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"loading%d",i]]

格式字符串错误。您可能有图像命名,例如loading1.png。但是您的格式字符串仅提供loading1。这不适用于imageNamed:。因此,您需要修复格式字符串以提供图像的全名。

UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"loading%d.png",i]]

或者其他什么。使用NSLog确保您获得完全正确的图像名称!!!

更好的方法是使用动画图像,但是:

UIImage* im = [UIImage animatedImageNamed:@"loading" duration:2];

这将自动查找所有loading1.pngloading2.png等,然后创建图片并自动启动动画。