2013-07-25 122 views
0

我已經按照我已經能夠在stackoverflow上找到的說明來解決以下問題,但都沒有工作。下面是我的代碼:根據文本高度設置UITableViewCell高度和單元格的文本標籤

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

static NSString *CellIdentifier = @"DoCCell"; 
DoCCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[DoCCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 
// Configure the cell... 

CGSize constraintSize = CGSizeMake(cell.infoLabel.frame.size.width, MAXFLOAT); 
CGSize labelSize = [_content[[indexPath row] * 2] sizeWithFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:12.0f] 
              constrainedToSize:constraintSize 
               lineBreakMode:NSLineBreakByWordWrapping]; 
CGRect frame = CGRectMake (cell.infoLabel.frame.origin.x, cell.infoLabel.frame.origin.y, labelSize.width, labelSize.height); 
[cell.infoLabel setFrame:frame]; 

cell.infoLabel.lineBreakMode = NSLineBreakByWordWrapping; 
cell.infoLabel.numberOfLines = 10; 

_font = cell.infoLabel.font; 
cell.infoLabel.text = _content[[indexPath row] * 2]; 
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
return cell; 
} 


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT); 

CGSize size = [_content[[indexPath row] * 2] sizeWithFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:12.0f] 
       constrainedToSize:constraintSize 
        lineBreakMode:NSLineBreakByWordWrapping]; 
return size.height + 30.0; 
} 

但是當我運行我的代碼,而標籤的大小不是細胞的高度適當地改變。

單元格是一個自定義單元格,我已經通過.xib文件添加了標籤。我嘗試手動拉伸標籤,它的工作原理是顯示所有文本,所以問題不在標籤的包裝中。我也測試了cell.infoLabel.frame.size.height,並且高度值DOES隨着單元格的高度而改變,只要值是關心的,但它不會像這樣顯示。我究竟做錯了什麼?

回答

1

我認爲問題可能是調整UILabel實例中文本的垂直對齊。

我想你應該做到以下幾點內的cellForRowAtIndexPath:

cell.infoLabel.text = _content[[indexPath row] * 2]; 
cell.infoLabel.numberOfLines = 0; 
[cell.infoLabel sizeToFit]; 

更多關於它的詳細信息可以在下面的鏈接中找到:Vertical Alignment of UILabel Text

希望這有助於! :)

+0

OK我現在有'//配置單元... _font = cell.infoLabel.font; cell.infoLabel.text = _content [[indexPath row] * 2]; cell.infoLabel.numberOfLines = 0; [cell.infoLabel sizeToFit];'但它仍然不起作用 –

+0

我不確定,但是您能否請嘗試移除標籤的換行符模式,具體而言,您是否可以將該行註釋掉並再次檢查: cell.infoLabel.lineBreakMode = NSLineBreakByWordWrapping; – An1Ba7

+0

這也沒有奏效。 [Here](http://imgur.com/A2aRkQJ)是.xib中標籤的詳細信息,如果有幫助 –

0

使用下面的代碼中的tableView的代表的cellForRowAtIndexPath:

// getDynamicHeight function calculates height based on text length 
    //Dynamically determine height for cell text 
    CGFloat calculatedHeight = [self getDynamicHeight:@"Some very long text here"]; 

    //Set name label frame based on text height 
    cell.infoLabel.frame = CGRectMake(cell.infoLabel.frame.origin.x,cell.infoLabel.frame.origin.y, cell.infoLabel.frame.size.width,calculatedHeight); 
    cell.infoLabel.numberOfLines = 5; 

    cell.infoLabel.text = @"Some very long text here"; 

// getDynamicHeight function 
//Dynamically determine height for cell based in containing Text 
-(CGFloat) getDynamicHeight : (NSString *) strCellTextName { 

UILabel *lblGetDynamicHeight = [[UILabel alloc] init]; 
lblGetDynamicHeight.lineBreakMode = UILineBreakModeWordWrap; 

lblGetDynamicHeight.text = strCellTextName; 

CGSize labelStringSize = [lblGetDynamicHeight.text sizeWithFont:lblGetDynamicHeight.font constrainedToSize:CGSizeMake(142, 9999) lineBreakMode:lblGetDynamicHeight.lineBreakMode]; 

return labelStringSize.height; } 
相關問題