如何计算UILabel上的NSString的宽度和高度
我正在一个项目上dynamic地UILabel宽度和高度上的NSString。 我试着用:
NSString *text = [messageInfo objectForKey:@"compiled"]; writerNameLabel.numberOfLines = 0; writerNameLabel.textAlignment = UITextAlignmentRight; writerNameLabel.backgroundColor = [UIColor clearColor]; CGSize constraint = CGSizeMake(296,9999); CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; NSLog(@"sizewidth = %f, sizeheight = %f", size.width, size.height); NSLog(@"writerNameLabel.frame.size.width 1 -> %f",writerNameLabel.frame.size.width); [writerNameLabel setFrame:CGRectMake(writerNameLabel.frame.origin.x, writerNameLabel.frame.origin.y, size.width, size.height)]; CGRect labelFram = writerNameLabel.frame; labelFram.origin.x = cell.frame.size.width - writerNameLabel.frame.size.width - 80; writerNameLabel.frame = labelFram; NSLog(@"writerNameLabel.frame.size.width 2-> %f",writerNameLabel.frame.size.width);
请看看绿色的泡泡,而不是灰色的泡泡。 还是不对。
泡沫的代码
bubbleImageView.frame = CGRectMake(writerNameLabel.frame.origin.x, writerNameLabel.frame.origin.y, writerNameLabel.frame.size.width+15, writerNameLabel.frame.size.height+5);
请指教! 谢谢!
那是因为你没有重用表格单元,结构应该是这样的:
NSString *text = [messageInfo objectForKey:@"compiled"]; if(cell == nil) { writerNameLabel.numberOfLines = 0; writerNameLabel.textAlignment = UITextAlignmentRight; writerNameLabel.backgroundColor = [UIColor clearColor]; [cell addSubview:writerNameLabel]; } else { writerNameLabel = (UILabel *)[cell viewWithTag:WRITER_NAME_LABEL_TAG]; } CGSize constraint = CGSizeMake(296,9999); CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; [writerNameLabel setFrame:CGRectMake(writerNameLabel.frame.origin.x, writerNameLabel.frame.origin.y, size.width, size.height)];
我已经通过并回答了你的一些问题,这是编写你的tableview控制器的正确方法。 你的问题将得到解决。