我已经在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
答案 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
的大小,将所有图像放入数组可能是一个坏主意(大量内存分配)。如果它是一个慢动画,你应该在你需要它们之前加载它们并在立即使用它们之后解除它们。