2017-02-24 56 views
0

我有一個UIImageView在Main.storyboard中定義,在UITableViewCell內,我希望它根據屏幕大小更改其寬度,我希望它改變高度,使其長寬比相同截至UIImageUIImageView裏面的動態大小UITableViewCell

(例如,FB應用程序中的新聞Feed - 圖像始終具有相同的寬度,但根據其原始高寬比的不同高度)。

我嘗試下面的選項(基於其他的做題):

  1. 設置尾隨,龍頭,底部,頂部約束(全部= 8)

    • (我的細胞擴增根據它們的高度到他們的內容)
    • 其中一個UIImageViewUITableView似乎有正確的大小
    • 其他圖像有大量的空白第二圖像下面
    • 這個空白似乎與滾動
  2. 與上述情況相同,再加上UIImageView.frame

    • 最常見的建議是可能增加改變UIImageView.frame = CGRect(...)
    • 圖片瀏覽忽視這些說明和大小仍然是所有單元格中的所有圖像視圖相同或
    • 圖像視圖放置了一些隨機高度,並有大量的wh下面的圖片ITE空間
  3. 這幫助:How do i scale an image correctly with fixed width and auto layout?

    let aRatio = (image?.size.width)!/(image?.size.height)! 
    cell.myImageView?.contentMode = .scaleAspectFit 
    let aRatioConstraint = NSLayoutConstraint(item: cell.myImageView, 
                   attribute: NSLayoutAttribute.width, 
                   relatedBy: NSLayoutRelation.equal, 
                   toItem: cell.myImageView, 
                   attribute: NSLayoutAttribute.height, 
                   multiplier: aRatio, 
                   constant: 0.0) 
    cell.myImageView?.addConstraint(aRatioConstraint) 
    
    • 它適用於大量的圖片,但仍有部分有空格上下+肖像(「高」圖片)左右都有空格。
    • 這兩種情況都可以通過大力呼叫tableView.reloadData()來解決,直到出現正確的尺寸。
    • 滾動瀏覽tableView弄亂了所有東西。滾動時,因此必要觸發怪異的白色空間和/或問題:

我試過很多很多方法,但都可以歸結爲兩件事情(如增加高度的限制,而不是直接操作框架。) tableView.reloadData()再次爲期望的結果。

那麼,推薦的方法是什麼?

OT:這種行爲(不期望的內容和屬性變化)是相當常見的,我也在着色引腳(地圖中的註釋標記)時也經歷過它。當我移動地圖以便引腳在屏幕上不可見並移回時,引腳切換顏色(wtf)。也許有更一般的方法來處理所有這些類似的事情?

回答

0

問題是我正在從網上下載圖片,當單元格被啓動時,以及當它們被重用時。

只裝載一次單元格內容並存儲它們解決了問題。

另一種方式可能是計算單元格內容高度並在heightForRowAt indexPath上定義它們。