如何使 UILabel 中的文本填满整个 UILabel?

3
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中的所有空间,因此以这种方式计算出的边距应该比实际需要的边距稍大一些。因此,我想找到更好的方法,谢谢。

请检查此链接:http://iosdeveloperfamily.webs.com/apps/blog/show/24245473-automatic-spacing-between-labels - Aman Aggarwal
谢谢,但那并不能解决我的问题。我的意思是,如果你想在一些文本底部放置一个图标,让它们之间的边距为50像素,你可以写icon.frame = CGRectMake(10,textLabel.frame.size.height + textLabel.frame.origin.y + 50, 100, 100); 但由于文本无法填满UILabel中的所有空间,所以这种方式下的边距应该比实际需要的要大一些。 - njuxjy
然后,您可以计算字符串的高度并相应地设置标签高度和图标y值,请查看以下链接:http://iosdeveloperfamily.webs.com/apps/blog/show/24374934-calculate-height-of-label-when-string-are-of-different-lengths-。 - Aman Aggarwal
1个回答

2

尝试使用以下方法,它可以返回 UILabel 的动态高度以及其文本内容... 使用此方法,您可以根据其文本内容设置 UILabel 的框架...

-(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];

请参考我的博客,希望这篇文章能给您一些启示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接