ios - 根据内容调整 UILabel 的宽度

标签 ios uilabel

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

我在CellForRowAtIndexPath中设置了标签的文本。

请提供示例。

提前致谢:)

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

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

最佳答案

获取字符串的大小:

  //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;

关于ios - 根据内容调整 UILabel 的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22607494/

相关文章:

ios - 默认手势事件在谷歌地图中不起作用

ios - UITableViewCell 当单元格可见时重新添加自定义内容

ios - iPhone 静态数据调用

objective-c - MKMapView 的暗淡部分

ios - 如何在 segue 中初始化 UIButton 的 titleLabel 字体?

ios - 动态高度 UILabel 在离开屏幕后工作

ios - 使用方法 : prepareForReuse 时遇到问题

ios - 使用 iOS7 Background Fetch 来 ping 服务器

c++ Floodfill算法在Xcode中崩溃

swift - 有没有不使用 sizeToFit 就能准确计算 UILabel 大小的方法?