2014-02-13 77 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