在问这个问题之前我已经看过了。所有问题都是关于调整UILabel
的高度而不是宽度。我尝试了其他方法,但它不起作用,如[label sizeToFit];
。是否可以根据文本调整标签的宽度?我在故事板的UITableViewCell
中创建了我的标签。我希望能够根据分配的文本调整宽度。我不想调整字体大小。
我在CellForRowAtIndexPath
。
请举例说明。
提前致谢:)
更新1:我在Storyboard中创建了一个自定义单元格,因此不能以编程方式进行。我在CellForRowAtIndexPath
中设置了每个单元格的内容,例如myLabel.text = recipe.name
。名称标签非常小,但我想根据文本的长度扩展其宽度,而不是截断尾部或缩小文本的大小。
Update2:我在单元格中有很多其他的UIElements。所以我在左上角,右上角,左下角,右下角有一个标签,中间有一张图片,默认值为120,因为它们有背景颜色。我把它设置得很小,标签上没有大量的空白空间。
答案 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将能够根据内容确定其宽度高度。