2013-06-19 71 views
1

我正在使用一個應用程序,該應用程序使用顯示從webservice獲取的內容的tableviews。在某些單元格中,我可能需要顯示未知尺寸的圖像。爲此,我有一個固定寬度(292pts)的單元格內的UIImageView。然後我相應地調整imageview高度,就像這樣。創建後更改UITableViewCell高度

imageviewheight = 292/imagewidth * imageheight

例如,如果我有一個圖像是730 * 1250我將高度設置爲500,以保持縱橫比並且顯示整個圖像。

但是,這可能是一個問題,當我需要設置單元格高度。由於圖像是從互聯網下載的,因此當我需要創建單元格時,圖像可能沒有完成下載。因此,我無法確定單元格高度,直到圖片下載完畢,我無法讓我的用戶界面等待,因此我顯示一個佔位符圖像,而單元格高度基於高度。

一旦我的圖片下載了,我需要在圖片視圖中顯示它。如果高度與佔位符圖像的高度相匹配,那很好。否則,我需要調整imageview高度以進行補償,並依次更改單元格高度。但是,問題是一旦細胞已經被創建,我無法改變高度。

我能想到的唯一解決方案是保存UIImage,並重新加載單元格。然後,因爲我已經有了圖像,所以我可以根據圖像設置單元高度。然而,這似乎是一個非常低效的解決方案。有什麼方法可以在創建單元格後調整單元格高度?我嘗試改變單元格的框架,但是沒有做任何事情。有沒有辦法在創建後更改單元格高度,或者只能重新加載單元格?

+1

我認爲這會幫助你[點擊這裏](http://stackoverflow.com/questions/7194136/how-do-i-change-the-height-of-a-uitableview-to-fit-its-動態內容)。 希望它有幫助。 – keen

+0

您必須在CellforrowatindexPath之前以任何代價設置單元格高度,我可以建議您,當您獲取圖像的信息時,將該圖像放入數組中,並使用該數組填充您的tableview,並在索引處爲行計算高度圖像高度對數組中的索引,..希望可以幫助你 –

+0

爲什麼你不設置圖像的高度和寬度的固定? –

回答

1

加載圖像後,請確保您在方法- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPathUITableViewDelegate行中返回正確的新高度。您可能需要致電- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation強制它重新檢查該行高度的值。

相關問題