iphone - 如何让UILabel中的文字填满UILabel中的所有空间?

标签 iphone ios 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];

参见My Blog ..

我希望你能从这篇文章中得到一些想法......

关于iphone - 如何让UILabel中的文字填满UILabel中的所有空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15964942/

相关文章:

swift - 向宽度可变的两个标签添加右约束

iphone - iOS 自定义 TabBar 高度

iphone - Streaming "proxy"转换视频格式

ios - 使用 GPUImage 从黑白滤镜中去除阴影

iphone - OpenAL 和 Popping 工件

ios - 检查应用名称是否可用

ios - UILabel - 在展开可选值时意外发现 nil

iphone - iOS - UIPasteboard 在应用程序外部不工作

IOS:在后台单击时删除 View

iphone - 使用 NSTimer 更新标签以在 10 秒内显示 10000 到 0