根据内容调整UILabel的宽度

时间:2014-03-24 11:00:14

标签: ios uilabel

在问这个问题之前我已经看过了。所有问题都是关于调整UILabel的高度而不是宽度。我尝试了其他方法,但它不起作用,如[label sizeToFit];。是否可以根据文本调整标签的宽度?我在故事板的UITableViewCell中创建了我的标签。我希望能够根据分配的文本调整宽度。我不想调整字体大小。

我在CellForRowAtIndexPath

中设置了标签的文字

请举例说明。

提前致谢:)

更新1:我在Storyboard中创建了一个自定义单元格,因此不能以编程方式进行。我在CellForRowAtIndexPath中设置了每个单元格的内容,例如myLabel.text = recipe.name。名称标签非常小,但我想根据文本的长度扩展其宽度,而不是截断尾部或缩小文本的大小。

Update2:我在单元格中有很多其他的UIElements。所以我在左上角,右上角,左下角,右下角有一个标签,中间有一张图片,默认值为120,因为它们有背景颜色。我把它设置得很小,标签上没有大量的空白空间。

3 个答案:

答案 0 :(得分:1)

获取字符串的大小:

  //Replace FLT_MAX with the maximum height/width you want the label to be, if no maximum leave as FLT_MAX.
CGSize stringSize = [YOUR_STRING sizeWithFont:YOUR_FONT constrainedToSize:CGSizeMake(FLT_MAX, FLT_MAX) lineBreakMode:NSLineBreakByWordWrapping];

然后调整标签大小:

[YOUR_LABEL setFrame:CGRectMake(0, 0, stringSize.width, stringSize.height)];

在iOS 7中,不推荐使用sizeWithFont,而是使用boundingRectWithSize

NSDictionary *stringAttributes = [NSDictionary dictionaryWithObject:YOUR_LABELS_FONT
                                                                 forKey: NSFontAttributeName];

CGSize stringSize = [text boundingRectWithSize:CGSizeMake(FLT_MAX, FLT_MAX)
                                             options:NSStringDrawingTruncatesLastVisibleLine |
                                                     NSStringDrawingUsesLineFragmentOrigin
                                          attributes:stringAttributes context:nil].size;

答案 1 :(得分:0)

CGSize maxSize = CGSizeMake(250, CGFLOAT_MAX); //250 is max desired width
CGSize textSize = [Label.text sizeWithFont:Label.font constrainedToSize:maxSize];
Label.frame = CGRectMake(0, 0, textSize.width, 15); // desired Bounds

使用上面的代码,您可以获得特定文本的帧大小,以及;然后相应调整标签大小

答案 2 :(得分:0)

您无需为UILabel设置显式宽度。与自动布局一起使用时,UILabel提供内在内容大小。如果添加提供标签的x,y位置(顶部空间约束+前导空间约束)的约束,autolayout将能够根据内容确定其宽度高度。