2013-03-12 35 views
0

我想從數據庫中獲取評論列表。評論可能甚至達到100線。問題是我無法讓它斷線。我用表格中的許多行

comment.adjustFontSizeToFitWidth = NO; 
comment.numberOfLines = 0; 
comment.lineBreakMode = UILineBreakModeCharacterWrap 

Curently測試的評論是:

looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong

,但它在中間,沒有 「...」,並沒有文字環繞結束。如何解決這個問題?

Btw。有很多像這樣的細胞。

+2

你必須增加文本標籤的高度也 – pdrcabrod 2013-03-12 11:35:49

+0

不能。那些沒有那麼多文本的字段將會有空的空間。它應該是動態的高度。 – 2013-03-12 11:37:29

+1

非常相似的問題。 http://stackoverflow.com/q/129502/767730 – Anupdas 2013-03-12 11:37:35

回答

0
#define FONT_SIZE 11.0f 
#define CELL_CONTENT_WIDTH 157.0f 
#define CELL_CONTENT_MARGIN 10.0f 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     NSString *text = YorCommentString;// or any String that u want. 
     CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f); 
     CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; 
     CGFloat height = MAX(size.height, 44.0f); // set as u want 
     return height + (CELL_CONTENT_MARGIN * 2); // set as u want 

} 

在上面的代碼中沒有必要設置用於numberOfLinesUILabel

+0

使單元格和文本視圖的高度不顯示... – 2013-03-12 11:39:23

+1

這是在表格視圖單元格中。標籤本身可能會根據尺寸進行調整以適應表格單元格視圖。但是表格總是隻能提供如rowHeight屬性給出的那麼多的空間,或者像tableView:heightForRowAtIndexPath:所返回的那樣。所以他不會來實際計算所需的大小,並從單元格的大小並通過實施tableView:heightForRowAtIndexPath提供exatyl: – 2013-03-12 11:51:42

+0

@ HermannKlecker-檢查我的編輯。 – iPatel 2013-03-12 12:01:13

0

做這件事情在你的tableview委託:

- (CGFloat)tableView:(UITableView *)tableView1 heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     CGSize maximumSize = CGSizeMake(480.0,1000.0); // Put appropriate required height and width. 
     NSString *dateString = [NSString stringWithFormat:@"%@",yourString]; 
     UIFont *dateFont = [UIFont fontWithName:@"Helvetica" size:14]; 
     CGSize dateStringSize = [dateString sizeWithFont:dateFont 
             constrainedToSize:maximumSize 
              lineBreakMode:UILineBreakModeWordWrap]; 
     return dateStringSize.height; 
} 

該代碼將設置適當高度的細胞。然後在你的cellForRowAtIndexPath函數中。保持此代碼:

comment.adjustFontSizeToFitWidth = NO; 
comment.numberOfLines = 0; 
comment.lineBreakMode = UILineBreakModeCharacterWrap 
0

你將不得不impement tableView:heightForRowAtIndexPath:http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html瞭解詳情。

在該方法中,您將不得不根據標籤顯示文本所需的高度來計算每個單元格的高度。 在NSString的UIExtenstions中,您可以找到用於確切計算的輔助方法。 http://developer.apple.com/library/ios/#documentation/uikit/reference/NSString_UIKit_Additions/Reference/Reference.html

所以充滿了關於如何使用的例子 - sizeWithFont:constrainedToSize:lineBreakMode:

然後,您可以佈局cellForRowAtIndexPath中的單元格項,您需要再次使用sizeWithFont:...來計算文本的大小。或者,如果你想要一個整潔的解決方案,更好的子類UITableViewCell並覆蓋其方法layoutSubviews並在那裏做佈局。