0
我正在使用GIF查看器,但我遇到了縮略圖圖像的問題。它們不是動畫,但是當我將巨大的gif設置爲imageView時,它仍然需要大量時間和接口滯後。如何將GIF圖像轉換爲輕量級UIImage?
這裏是我的方法,我是如何做到這一點:
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
MyCell *myCell = [collectionView
dequeueReusableCellWithReuseIdentifier:@"Cell"
forIndexPath:indexPath];
UIImage *image;
NSData *data = [NSData dataWithContentsOfURL:self.dataSource[indexPath.row]];
image = [UIImage imageWithData:data];
myCell.myImageView.image = image;
return myCell;
}
網址是局部的,因爲我已經在這裏找到了瓶頸,設置巨大的GIF(每個幾兆字節)的UIImage的是昂貴的,需要時間。
如何對此進行優化? 我想從我的圖片GIF數據創建輕量級縮略圖非動畫圖像。我如何去做這件事?
編輯: 其實我已經實現緩存來存儲它們,但這不是理想的解決方案,因爲我必須偶爾清除緩存內存警告。我的問題仍然有效。這裏是我的代碼現在:
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
MyCell *myCell = [collectionView
dequeueReusableCellWithReuseIdentifier:@"Cell"
forIndexPath:indexPath];
UIImage *image;
if ([self.cache objectForKey:self.dataSource[indexPath.row]]) {
image = [UIImage imageWithData:[self.cache objectForKey:self.dataSource[indexPath.row]]];
} else {
NSData *data = [NSData dataWithContentsOfURL:self.dataSource[indexPath.row]];
image = [UIImage imageWithData:data];
}
myCell.myImageView.image = image;
return myCell;
}
爲什麼不使用[這個班級](https://github.com/arturogutierrez/Animated-GIF-iPhone) – Coder404
@ Coder404我已經有GIF動畫庫。我在細節屏幕上以動畫視圖展示它們。對於我需要的屏幕,集合視圖,我希望它們不是動畫和輕量級的。 – Dvole