2014-02-13 118 views
0

我正在開發一個應用程序,需要顯示UILabelUITableviewCell。我還需要根據文本大小調整UILabel。 我使用下面的代碼來獲得文本大小的contentsizeUILabel與動態高度到UITableviewcell

CGRect rect = [as boundingRectWithSize:CGSizeMake(220.0, 2000.0) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: font} context:nil]; 

對於更新幀UILabel我使用下面的代碼。

rect.origin.x = cell.lblDescription.frame.origin.x; 
rect.origin.y = cell.lblDescription.frame.origin.y; 
rect.size.width = cell.lblDescription.frame.size.width; 

[cell.lblDescription setFrame:rect]; 

它設置了錯誤的框架。 請查看附件截圖。 enter image description here

回答

1
NSString *text = [NSString stringWithFormat:@"%@",[[arr_cart objectAtIndex:indexPath.row] objectForKey:@"name"]]; 
    UIFont *font = [UIFont fontWithName:@"ArialMT" size:12]; 
    CGSize size = [(text ? text : @"") sizeWithFont:font constrainedToSize:CGSizeMake(200, 9999) lineBreakMode:NSLineBreakByWordWrapping]; 
    UILabel *lbl_desc=[[UILabel alloc]init]; 
    lbl_desc.numberOfLines = 0; 
    lbl_desc.frame=CGRectMake(70,18, size.width, size.height); 
    lbl_desc.lineBreakMode = NSLineBreakByWordWrapping; 
    lbl_desc.text = (text ? text : @""); 
    lbl_desc.font = font; 
    lbl_desc.backgroundColor=[UIColor clearColor]; 
    lbl_desc.textColor = [UIColor darkTextColor]; 
    [cell.contentView addSubview:lbl_desc]; 
    [lbl_desc release]; 
+0

由於我使用已經添加到Xib的UILabel,它不起作用。因此,使用上面的代碼並將新的UILabel添加到cellforRowAtIndexpath()方法中。謝謝。 –

+0

歡迎夥計.., –

1

您必須檢查- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath UITableViewDelegate方法中標籤的高度。

CGSize maximumLabelSize = CGSizeMake(your_label_width, FLT_MAX); 
CGSize expectedLabelSize = [label_text sizeWithFont:[UIFont fontWithName:@"your_font" size:your_font_size] constrainedToSize:maximumLabelSize lineBreakMode:NSLineBreakByWordWrapping]; 

然後將單元高度設置爲expectedLabelSize.height

也在您的自定義單元中做同樣的事情。

0

使用下面的代碼

[self setDynamicHeightOfLabel:lblName withLblWidth:97 andFontSize:13]; 

在你只需要與特定寬度和標籤的fontSize的通過你UILabel名以上的方法。

-(void) setDynamicHeightOfLabel:(UILabel *) myLabel withLblWidth:(CGFloat) width andFontSize:(int) fontSize 
{ 
    CGSize myLabelSize = CGSizeMake(width, FLT_MAX); 
    CGSize expecteingmyLabelSize = [myLabel.text sizeWithFont:myLabel.font constrainedToSize:myLabelSize lineBreakMode:myLabel.lineBreakMode]; 
    CGRect lblFrame = myLabel.frame; 
    lblFrame.size.height = expecteingmyLabelSize.height; 
    myLabel.frame = lblFrame; 
    int addressLine = myLabel.frame.size.height/fontSize; 
    myLabel.numberOfLines = addressLine; 
} 

使用上面的代碼,您可以設置動態高度UILabel