我有一些問題在UITableView中實現動態行高 - 但它不是我遇到問題的單元格,它在單元格內的UILabel。UILabel在動態高度的UITableViewCell中
該單元格只包含一個UILabel來顯示文本。我的tableView:heightForRowAtIndexPath:通過使用NSString的sizeWithFont:方法計算標籤的高度,正確調整每個單元格的大小。
我有一個UITableViewCell的子類,它只保存故事板中的UILabel屬性。在故事板中,我將它的行設置爲0,因此它將使用盡可能多的行,並且我已將其lineBreak設置爲Word Wrap。
下面是我如何設置單元格:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
ExpandCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
SomeObject *object = self.tableObjects[index.row];
cell.myLabel.text = [object cellText];
[cell.myLabel sizeToFit];
return cell;
}
當我建立這個,我得到了小區的所有大小以正確的高度爲他們的內容我的表視圖,但唱片公司都1條線就是從單元的邊上跑下來的。但是,如果我滾動表格以便單元離開屏幕,然後回滾到它們,它們的標籤將正確調整大小,單元格將顯示我最初的預期。
我也嘗試用相同的方法計算標籤框架,我正在計算行高度,並且我得到相同的行爲 - 直到它從屏幕滾動並再次返回時,它才能正確繪製。
我發現瞭解決這個問題的兩種方法,但都不是可接受的解決方案。
首先,如果在viewDidAppear:我在我的tableview調用reloadData,單元格和標籤第一次正確繪製自己。這對我的情況不起作用,因爲我將在此表中添加和刪除單元格,並且每次添加單元格時我都不想調用reloadData。
第二種解決方法對我來說似乎很奇怪 - 如果我將字體設置保留在UILabel上的默認系統字體17上,那麼單元格會正確繪製自己。只要我改變字體大小,它就會恢復到它沒有正確繪製標籤直到它離開屏幕並返回,或者在tableView上調用reloadData爲止的行爲。
我會很感激任何幫助這一個。
這個帖子正確回答您的問題:http://stackoverflow.com/questions/8903369/dynamic- UITableViewCell的高度。如果您以前從未創建過動態大小的單元格,但可能有點棘手,但並不太難。 – macandyp
我不明白該答案中的代碼如何做與我正在做的不同的事情。我在cellForRowAtIndexPath中設置標籤的框架,但它不會在下一次重畫時應用該框架。或者我錯過了什麼? – alivingston
您是否正在實施heightForRowAtIndexPath? – macandyp