私のアプリケーションには、寸法が 640*1136 の.jpgファイルの 260 個の画像のアニメーションがあります。以下のように、すべての画像を配列にロードします。
ボタンクリック時
- (void)singButtonClick:(id)sender
{
[self initSingArray];
[self startAnimationWithImages:singArray duration:2];
}
配列を初期化し、リソースフォルダーから260個の画像すべてをロードします
self.imageArray = [[NSBundle mainBundle] pathsForResourcesOfType:@"jpg" inDirectory:nil];
- (void)initSingArray
{
if (!singArray)
{
singArray=[[NSMutableArray alloc] init];
for(NSString *str in self.imageArray)
{
if([[str lastPathComponent] hasPrefix:@"Sing_"])
{
[singArray addObject:[UIImage imageNamed:[str lastPathComponent]]];
}
}
}
}
画像アニメーションの場合は、単にその配列を使用して UIImageView に渡しました
- (void)startAnimationWithImages:(NSMutableArray*)images duration:(NSTimeInterval)duration
{
[self startAnimationWithImages:images duration:duration repeatCount:1];
}
- (void)startAnimationWithImages:(NSMutableArray*)images duration:(NSTimeInterval)duration repeatCount:(int)repeatCount
{
if (self.gifImageView.isAnimating)
{
[self.gifImageView stopAnimating];
}
self.gifImageView.animationImages = nil;
self.gifImageView.animationImages = images; // Animated image array
self.gifImageView.animationDuration = duration; // Perform a full animation when
self.gifImageView.animationRepeatCount = repeatCount;// Animation number of repetitions
[self.gifImageView startAnimating];
}
ただし、最初にボタンをクリックすると、アニメーション化に時間がかかります。画像の数が少ない場合は正常に機能します。
画像の寸法が問題になりますか?
それを解決するのを手伝ってください。
注:この質問に関連する多くの投稿を見つけましたが、この問題を解決するのに役立つものはありません。