如何使文本在UILabel填充所有的空间在UILabel


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中的所有空间,所以这种方式的边距应该比它应该的大一点。所以我想找出一个更好的方法,谢谢。

尝试使用以下方法返回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];

见我的博客..

最新更新