2013-12-16 34 views
0

我有一個tableview顯示狀態的飼料(如下圖),並試圖找出如何適當調整每個細胞的大小又稱爲短狀態具有更小的細胞和更大的細胞,顯示所有狀態文本以獲取更長的狀態。我碰到這個嘖嘖:http://www.cimgf.com/2009/09/23/uitableviewcell-dynamic-height/uitableview cell爲單元格w在ios7中自動調整大小。不止一個標籤[IMG]

但即時通訊仍然有點困惑我將如何去額外的空間計算我的按鈕或左邊緣爲我的拇指img。

目前它由2個按鈕,一個標籤(用戶名稱),一個拇指img和一個文本框(不確定我是否應該使用文本框或標籤來顯示狀態,或者對我來說很好,如果我它的工作原理)

請原諒,如果這是一個已經回答了某個地方的問題。我primarly一個Android開發者在IOS纔剛剛起步,並沒有發現關於這個主題混合答案很多這樣的IM有點不確定,如果有一個簡單的解決這個問題IOS7

enter image description here

回答

2

有幾種方法這樣做,但我發現最可靠的是使用臨時和不可見的UITextView來獲得必要的大小。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //Ideally you should do lazy loading so that instead of creating a new textView each time, you just reuse the same one. 
    UITextView *temp = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 44)]; //This initial size doesn't matter 
    temp.font = __Your_desired_font__ 
    temp.text = @"Put your status here"; 

    CGFloat textViewWidth = __your_constraint_width__ 
    CGRect tempFrame = CGRectMake(0,0,textViewWidth,44); //The height of this frame doesn't matter. 
    CGSize tvsize = [temp sizeThatFits:CGSizeMake(tempFrame.size.width, tempFrame.size.height)]; //This calculates the necessary size so that all the text fits in the necessary width. 

    //Add the height of the other UI elements inside your cell 

    return tvsize.height + staticElementHeights 


} 

這適用於iOS 7,但我認爲,如果你想支持iOS 6中,你需要實際添加的TextView作爲該子視圖的工作。只需設置temp.hidden = YES

文本顯示在一個UILabel的方式是從一個UITextView不同,所以對於一個UILabel,你應該使用這個答案 iOS auto adjust label height

+0

最後一件事描述的方法,怎麼會我正確地去獲取標籤來顯示所有文本?我試圖將它設置爲0行,在我的故事板和我的自定義單元格中......並沒有任何內容 – ChuckKelly

相關問題