目标C:计算单个标签的高度问题

我将一个标签添加到一个单元格中,该单元格具有基于要添加到其中的文本的dynamic高度。 我已经设置我的字体大小为12,如下所示:

CGFloat height = [CustomCell getIndividualLabelHeight:text]; NSLog(@"height of commet:%@ is %f",commentText, height); CustomOHAttributLabel *label = [[CustomOHAttributLabel alloc]initWithFrame:CGRectMake(CELL_TEXT_LEFT_MARGIN, 2*CELL_SPACING+totalCommentLabelHeight, CELL_CONTENT_WIDTH - (CELL_TEXT_LEFT_MARGIN*2), height)]; [label setLabelwithText:text fontSize:12 andSubString:userName withURL:url]; 

但是,在我的getIndividualLabelHeight方法中,如果我也将字体设置为12.0(设置CGSize大小),标签中的文本可能会被截断。 只有当我把它设置为14时,文本才不会被截断。

 + (CGFloat)getIndividualLabelHeight:(NSString *)text { CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f); //The full text will only show when I set fontsize to 14 (instead of 12) CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; return size.height; } 

任何人都有任何想法,为什么我不能在我的get height方法中设置与我用于文本的实际字体大小相同的字体大小?

我已经为CustomOHAttributLabel添加了我的实现代码以供进一步参考

  @implementation CustomOHAttributLabel - (CustomOHAttributLabel*) initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { } return self; } - (void) setLabelwithText:(NSString *)text fontSize:(CGFloat)fontSize andSubString:(NSString *)subString withURL:(NSString *)url { NSMutableAttributedString* attrStr = [NSMutableAttributedString attributedStringWithString:text]; [attrStr setFont:[UIFont systemFontOfSize:fontSize]]; [attrStr setTextColor:[UIColor grayColor]]; [attrStr setFont:[UIFont boldSystemFontOfSize:fontSize] range:[text rangeOfString:subString]]; [attrStr setTextColor:[UIColor darkGrayColor] range:[text rangeOfString:subString]]; self.attributedText = attrStr; [self addCustomLink:[NSURL URLWithString:url] inRange:[text rangeOfString:subString]]; } @end 

试试这个代码:

 CGSize labelsize; UILabel *commentsTextLabel = [[UILabel alloc] init];; commentsTextLabel.tag =50; [commentsTextLabel setNumberOfLines:0]; [commentsTextLabel setBackgroundColor:[UIColor clearColor]]; NSString *text=@"cakghaahsdlajsldjasdsa;dkas;dkasdkasdasp'dlasp'dlas'dlas'dlas'dlas'dlas'dlasdlasdlasdlasdlas'das'dlasdas"; [commentsTextLabel setFont:[UIFont fontWithName:@"Helvetica"size:14]]; labelsize=[text sizeWithFont:commentsTextLabel.font constrainedToSize:CGSizeMake(268, 2000.0) lineBreakMode:UILineBreakModeWordWrap]; commentsTextLabel.frame=CGRectMake(10, 24, 268, labelsize.height); [cell.contentView addSubview:commentsTextLabel]; [commentsTextLabel release]; 

从这个代码你的标签高度将dynamic调整。 确保如果你添加这个标签在你的表格视图单元格,所以不要忘记使单元格高度dynamic也。