2013-10-28 70 views
1

我正在加載一個表格視圖,其中每個表格單元格有一些左縮進(思考消息線程/回覆),並且還包含動態高度(回覆的內容)的標籤。我使用的是AutoLayout,因此尺寸本身就是UILabel。爲了實現每個UITableViewCell縮進我跟着的人的意見在這裏SO覆蓋layoutSubviewsUITableViewCell,所以它看起來是這樣的:UITableViewCell縮進與動態UILabel高度

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 

    float indentPoints = self.indentationLevel * self.indentationWidth; 

    self.contentView.frame = CGRectMake(indentPoints, 
     self.contentView.frame.origin.y, 
     self.contentView.frame.size.width - indentPoints, 
     self.contentView.frame.size.height); 
} 

現在所發生的事情,雖然有時候是的UILabel文本將cut-在底部。在我看來,UILabel在計算適當的高度和繪製自身(因爲它是動態的)而不是具有縮進的新幀大小時使用舊的幀大小 - 縮進,相同文本的可用寬度較少,所以它應該知道它需要更高。

如果我刪除此縮進和評論了我的倍率layoutSubviews或者如果我把電話給[super layoutSubviews]底,而不是開始,文本不再切斷,但我失去了我的壓痕。

我想要的是我的UITableViewCell適當縮進,並讓我的動態UILabel識別新的框架大小並繪製而不會截斷。我試過在layoutIfNeeded的地方撥打我的UILabel,但沒有成功。

回答

0

您需要將前面計算的UILabel的大小使用起來:

CGSize size = [str sizeWithFont:label.font constrainedToSize:CGSizeMake(label.bounds.size.width, CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping]; 

使用,爲您的大小細胞。可以更好地做到這一點在你的tableview數據源heightForRowAtIndexPath

+0

嗨railparade,文本被切斷的問題實際上與單元格大小無關。我可以將單元格大小設置爲1000,並且UILabel文本仍然會突然切斷。 – Neil

+0

@Neil,你是否對UILabel的單元格的頂部和底部有限制,所以它會隨着單元格擴展?另外,你有numberOfLines設置爲0? – rdelmar