2016-01-10 65 views
3

更新:Github鏈接包含該項目。如果可能的話下載並點擊上面的重新加載,您將瞭解其中的差異。和Zhang先生謝謝您的「Aspect Scale to Fill」建議。它幫助我很少。具有異步圖像加載的自定尺寸單元

我有一個tableview異步加載圖像(與AFNetworking UIImageView類別類).Images第一次壓縮可見單元格。一旦我重新加載或滾動op和down圖像根據其大小進行調整。

基本上我會得到不同大小的圖像。其寬度應爲單元格的寬度,高度可以是任何東西

實現了selfsizing一切必要步驟(適當的自動版式約束和適當的委託方法)

//my tableview setup  
self.tblTest?.estimatedRowHeight = 1000.0 //i've tried with all possible guesses and 
//tried with delegate also 
self.tblTest?.rowHeight = UITableViewAutomaticDimension 

我添加的約束如下:

enter image description here

在我的測試單元格中。

func setUpImage(url:NSURL){ 
    //tried with another function also without NSURLRequest 
    self.imvTest?.setImageWithURLRequest(NSURLRequest(URL: url), 
             placeholderImage: UIImage(named: "store_placeholder"), 
             success: { (requset, response, image) -> Void in 
     self.imvTest?.image = image 
     print(image.size) 

     }, failure: { (error) -> Void in 

      self.imvTest?.image = nil 
    }) 
} 

結果

enter image description here

預計

enter image description here

如何防止圖像壓縮的第一次?

P.S:我不認爲它是正確的重新加載表視圖和時間圖像設置。

請告訴我我失蹤和任何內容的優先事項等。

+0

你試過內容模式設置爲看點規模後填寫你的imageView? – Zhang

+0

是@張我試過了。我將很快發佈git集線器上的項目 – Akshay

回答

0

我認爲正在發生的事情是,該單元格的原始內容大小已經佈局。然後新圖像異步進入並設置。通常,您在單元佈局之前設置cellForRowAtIndexPath:中單元的數據。但是,當圖像異步進入時,佈局已經發生,所以太晚了。

當一個新的圖像進來,數據已經改變,所以你需要告訴tableview中重新加載數據。

然而,當圖像進入時,您可以reload an individual cell,而不是重新加載tableview作爲一個整體。這當然會比重新加載整個tableview更高性能。

+0

使用此方法設置單元格內容時,我應該重新加載整個單元格需要重新加載明確..所以我應該與tablview並行地重新加載正確!? – Akshay

1

嘗試調用

tableView.beginUpdates() 
tableView.endUpdates() 

在成功關閉設置圖像後

或嘗試tableView.reloadRowsAtIndexPaths與細胞的indexPath設置圖像

+1

我也嘗試過這兩種。這是一場性能災難。 – Akshay

+0

您是否實現了estimatedHeightForRowAtIndexPath? – juanjo

+0

是的,我已經實施了.. – Akshay