来自383 .gif的Gif动画

时间:2013-05-19 10:54:45

标签: objective-c

我已经在adobe flash中创建了一个gif动画,现在我想在Xcode中导入它以将它放入我的应用程序中。我有383个gif图像(帧),我编写了这段代码来创建一个流畅的动画流程:

#import "ViewController.h"
#define IMAGE_COUNT       383




@interface ViewController ()

@end

@implementation ViewController




- (void)viewDidLoad
{

            [super viewDidLoad];

    //////////////////


    // Build array of images, cycling through image names
    for (int i = 0; i < IMAGE_COUNT; i++)
     imageView.animationImages = [[NSArray alloc]initWithObjects:[UIImage imageNamed:
                               [NSString stringWithFormat:@"picollage00%d.gif", i]],nil];


    imageView.animationRepeatCount = 5;
    [imageView startAnimating];


    // Do any additional setup after loading the view, typically from a nib.
}

图像是这样的,然后图像计数到picollage0383.gif

enter image description here

1 个答案:

答案 0 :(得分:0)

在您的代码中是另一个语义错误:您从图片picollage000.gif开始,但它应该是picollage0001.gif,不应该吗?
我使用if-clauses和for-loop中的另一个条件改变了它。

#import "ViewController.h"
#define IMAGE_COUNT 383

@interface ViewController ()
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSMutableArray *imageArray = [[NSMutableArray alloc] initWithCapacity:0];
    // Start with image picollage0001.gif
    for (int i = 1; i <= IMAGE_COUNT; i++)
        if (i < 100)
            if (i < 10)
                [imageArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"picollage000%d.gif", i]]];
            else [imageArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"picollage00%d.gif", i]]];
        else [imageArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"picollage0%d.gif", i]]];

    // Assuming `animationImages` is an NSArray
    imageView.animationImages = [imageArray copy];
    imageView.animationRepeatCount = 5;
    [imageView startAnimating];
}

上面是经过测试的代码(循环),它生成正确的文件名,并将初始化的UIImage存储在NSMutableArray中。

注意:根据gif的大小,将所有图像放入数组可能是一个坏主意(大量内存分配)。如果它是一个慢动画,你应该在你需要它们之前加载它们并在立即使用它们之后解除它们。