2013-03-31 57 views
0

我想要的效果是這樣的。當設備從服務器接收數據,加載圖像逐漸UIImageView逐步加載圖像

loading progressively effect

目前我正在做這樣的事情

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    [overallData appendData:data]; 
    self.imageView.image = [UIImage imageWithData:overallData]; 
} 

這是工作,但它消耗所有的RAM,觸發器MemoryWarning應用程序有時會崩潰。更不用說它每次運行上面的代碼時都會顯示這個錯誤<Error>: ImageIO: JPEG Corrupt JPEG data: premature end of data segment,但我認爲這不是一個大問題。

有人對優化有更好的想法嗎?否則,我將不得不消除這種影響。

+0

還有一兩件事,我不知道這是否是相關的,但我使用'ARC'。 – Gonzo

+0

didReceiveData方法被調用了多少次?也許它被調用的次數太多,導致內存警告 另外,看看jpg和png之間的差異,看看哪一個更適合漸進式加載(注意,你不想逐步加載jpg逐步加載一個更高分辨率的版本,而不是你的例子中的截止版本) –

+0

這個函數被調用大約5次,並且提高分辨率的加載效果也很好。這並不重要,因爲它提供了加載圖像的想法。 – Gonzo

回答

0

我認爲你在表格視圖縮略圖中使用相同的大圖像, 你最好下載圖像作爲在NScache中保存數據,裁剪圖像縮略圖在表格視圖中顯示,在完整圖像視圖中不要裁剪從緩存內存表現完整的圖像,

如果您使用表中的全尺寸圖像查看應用程序會消耗內存重

+0

在表格視圖中,我正在加載縮略圖(44x44)並將它們保存到NSCache中。然後,只有當它進入完整圖像視圖時,它纔開始從服務器加載完整大小。因爲如果我不確定用戶是否打開它,加載完整大小的圖像是沒有意義的。 – Gonzo