簡體   English   中英

如何在UITableViewCell中調整UIImageView的大小?

[英]How to resize UIImageView in UITableViewCell?

我想在單元格中顯示圖像,並且因為我需要先下載它,所以我想顯示(為簡單起見)具有與圖像相同的寬度和高度的黑色視圖。

因為我想將圖像拉伸到與單元格寬度相同的寬度,所以我只需要設置縱橫比即可設置高度,這在調用cellForRowAt時在我的代碼中提供。

我決定在下載圖像之前實現“黑視圖”,我只需要一個具有黑色背景的UIImageView,並在調用cellForRowAt時調整其大小。 但這是問題所在,因為使用類似問題的代碼對我不起作用。

我在cellForRowAt方法中嘗試過這樣的事情:

var frame cell.imageView.frame
frame.size.height = CGFloat(aspectRatio) * frame.size.width
cell.imageView.frame = frame

編輯

結果,我想要像facebook這樣的東西,其中我們的照片具有與單元格相同的寬度和與寬高比相對應的高度。 為簡單起見,單元格只能具有UIImageView。

由於您使用的是自動布局,因此在情節提要中應設置以下兩項:

  • 首先,將UIImageView的寬度設置為單元格的完整寬度
  • 其次,將UIImageView寬高比設置為1:1-這表示高度始終與寬度相同。

如果您要使用UITableView自動尺寸”作為單元格高度,那么這應該就足夠了; 任何地方都沒有代碼,其他一切都正常。

如果您沒有使用自動像元高度功能,則如果它們都相同,或者使用相同的像元,或者使用self.tableView.rowHeight = self.tableView.bounds.size.width設置一次像元高度。不同的高度:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 

    if (<indexPath IS IMAGE ROW>) 
        return tableView.bounds.size.width
    return <default height>
}

在我寫過<indexPath IS IMAGE ROW> ,應將其替換為需要檢測該特定單元格是否為圖像類型的任何條件。 另外,正如Rikh所指出的那樣,在我寫<default height> ,應將其替換為非圖像類型的單元格的高度。 當然,您的桌子可能設計得更加復雜。 這僅涵蓋了您要詢問的情況。

這是我的解決方案

imageView.contentMode = UIViewContentModeCenter;
if (imageView.bounds.size.width > ((UIImage*)imagesArray[i]).size.width && imageView.bounds.size.height > ((UIImage*)imagesArray[i]).size.height) {
       imageView.contentMode = UIViewContentMode.ScaleAspectFit;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM