我有一張從互聯網上下載的照片庫,因此我使用了Enormego的EGOImageView。我注意到,當圖像在緩存中後,當我滾動我的tableview時,滾動會滯後。我立即發現,當從return [UIImage imageWithContentsOfFile:cachePathForKey(key)];
從硬盤中檢索圖像時,它正在處理主線程,所以我將操作添加到了NSOperationQueue。這減少了一半的滯後,但滾動仍然結結巴巴。通過代碼去後,我注意到,在成功的方法uImageView中的UIImageView的setImage在iOS中滾動延遲
- (void)imageLoaderDidLoad:(NSNotification*)notification {
if(![[[notification userInfo] objectForKey:@"imageURL"] isEqual:self.imageURL]) return;
UIImage* anImage = [[notification userInfo] objectForKey:@"image"];
self.image = anImage;
[self setNeedsDisplay];
if([self.delegate respondsToSelector:@selector(imageViewLoadedImage:)]) {
[self.delegate imageViewLoadedImage:self];
}
}
註釋掉self.image = anImage;
得到完全擺脫滯後的(但顯然我沒有得到任何圖像)。據我所知,如果我想改變UI,它必須在主線程中完成。有沒有辦法爲EGOImageView設置圖像而不會滯後滾動?
注:JPG文件是50KB左右
感謝
我想圖像正在調整大小,以適應self.image框架,所以滯後。是這樣嗎?您是否嘗試過在後臺調整大小? – Gabriel 2012-02-06 07:23:18
@Gabriel我沒有!我根本沒有考慮過。我會嘗試一下! – 2012-02-06 07:31:41
@AndrewPark你有沒有發現如何優化這個? – bogardon 2012-02-10 01:50:54