[英]First time Image animation takes long time to animating
在我的應用程序中,有260張圖像的動畫 .jpg文件的尺寸為640 * 1136。我將所有圖像加載到數組中,如下所示。
在按鈕上單擊
- (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]]];
}
}
}
}
對於Image動畫,僅使用該數組並將其傳遞給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];
}
但是在第一次點擊按鈕時,動畫制作將花費很長時間。當圖像數量較少時,效果很好。
圖像的尺寸會產生問題嗎?
請幫我解決。
注意 :我發現很多帖子都與此問題相關,但是沒有一個可以幫助我解決此問題。
您必須執行此操作[self initSingArray];
在viewDidLoad
或其他位置,而不是在按鈕上單擊。 它會解決您的問題。 在您的情況下,原因是第一次創建圖像陣列時需要花費時間。
在imageview-animation-getting-more-memory上查看我對相同問題的答案。 最重要的是,您永遠不會使用animationImages方法和許多類似的圖像來使您的應用程序正常工作。 您最好使用已經解決內存問題的現有解決方案,並提供一種避免在動畫開始顯示之前將所有圖像數據解碼到內存中的方法(這就是為什么開始動畫如此緩慢的原因)。
經過大量的研發,最終我通過一些博客文章解決了這個問題。我的應用程序成功運行,沒有崩潰的問題,響應速度很快。
而不是使用UIImageView進行動畫播放請嘗試使用此爐排教程Memory_usage_on_ios
希望此答案可以幫助某人為許多圖像幀設置動畫,而不會出現內存泄漏問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.