UILabel *label = [[UILabel alloc] init];
label.text = @"Hello";
[label sizeToFit];
CGSize size = label.frame.size;
通常我们以这种方式得到标签的大小,但是UILabel中的文本没有填满其中的所有空格,文本周围总是有一些边距。这使得绘图标签很难与视觉草案完全相同。有人可以帮忙吗?
例如:如果你想在某些文本的底部放一个图标,让它们之间的边距为50px,然后你就写出icon.frame = CGRectMake(10,textLabel.frame.size.height + textLabel.frame.origin.y + 50,100,100);但由于文本无法填满UILabel中的所有空间,因此这种方式的边距应该比应有的大一些。所以我想找出一个更好的方法,谢谢。
答案 0 :(得分:2)
尝试使用此bellow方法返回UILable
的动态高度及其文本内容...我们可以使用此方法设置UILable
的框架及其文本内容...
-(float) calculateHeightOfTextFromWidth:(NSString*) text: (UIFont*)withFont: (float)width :(UILineBreakMode)lineBreakMode
{
[text retain];
[withFont retain];
CGSize suggestedSize = [text sizeWithFont:withFont constrainedToSize:CGSizeMake(width, FLT_MAX) lineBreakMode:lineBreakMode];
[text release];
[withFont release];
return suggestedSize.height;
}
并像下面那样使用它......
UILabel *lblAddress = [[UILabel alloc]init];
[lblAddress setFrame:CGRectMake(110, 31, 200, 50)];
lblAddress.text = @"your Text ";
lblAddress.lineBreakMode = UILineBreakModeWordWrap;
lblAddress.numberOfLines = 0;
lblAddress.font = [UIFont fontWithName:@"Helvetica" size:12];
lblAddress.frame = CGRectMake(lblAddress.frame.origin.x, lblAddress.frame.origin.y,
200,[self calculateHeightOfTextFromWidth:lblAddress.text :lblAddress.font :200 :UILineBreakModeWordWrap] );
lblAddress.textColor = [UIColor darkGrayColor];
[self.view addSubview:lblAddress];
请参阅My Blog ..
我希望你能从这篇文章中得到一些想法...