[英]How to resize a UIImageView and force relayout of the parent UITableViewCell
[英]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.