自动调整 UILabel 文本大小以适应 UILabel 宽度

Posted

技术标签:

【中文标题】自动调整 UILabel 文本大小以适应 UILabel 宽度【英文标题】:Auto fit UILabel text size to fit UILabel width 【发布时间】:2015-03-19 05:41:51 【问题描述】:

我正在做一个日历应用程序。在年页面中,我想显示一年 12 个月,每个月显示 30 天。

这里有问题:

1.现在我正在尝试使用[nsstring stringbyappendingstring] 将 30 天添加到一个 uilabel 中,但是如何自动适应每天之间的每个间隔?

我只能喜欢

1||2||3||4||5||6||7

8||9||10||11||12||13||14

我希望它看起来像

1 || 2 || 3 || 4 || 5 || 6 || 7

8 || 9 ||10||11||12||13||14

||

2. 或者我应该每天添加 uilabel 吗?但是我每个月会得到 30 个 uilabel,在一个视图中每年 365 个 uilabel,这听起来很愚蠢。

谁能帮帮我,拜托!

【问题讨论】:

【参考方案1】:

您只需要使用一个标签来显示所需间距的所有日期

1) 创建一个多行标签,设置它的宽度。

2) 通过使用带有所需间距的 stringByAppendingsString 附加所有日期来创建一个字符串。

3) 使用下面的 API 通过保持其宽度固定来计算标签的高度-

#define LABELS_MAX_HEIGHT             10000.0f


CGSize constraintSize = CGSizeMake(label.frame.size.width, LABELS_MAX_HEIGHT);

NSAttributedString *attributedText = [[[NSAttributedString alloc] initWithString:datesString attributes:@NSFontAttributeName: label.font] autorelease];
        CGRect rect = [attributedText boundingRectWithSize:constraintSize
                                                   options:NSStringDrawingUsesLineFragmentOrigin
                                                   context:nil];
        [label setSize:rect.size];

【讨论】:

以上是关于自动调整 UILabel 文本大小以适应 UILabel 宽度的主要内容,如果未能解决你的问题,请参考以下文章

UILabel - 自动调整大小标签以适合文本?

自动布局以动态调整 UILabel 大小不起作用

调整UILabel的大小以适应字体大小和文本

调整 UILabel 的大小以适应自定义 UITableViewCell 中的文本,无论宽度如何

调整文本大小以适应宽度(1行标签)后,如何在 UILabel 中垂直和水平居中?

调整 UILabel 的大小以适应插图