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

时间:2015-03-19 05:41:52

标签: ios uilabel

我正在做日历应用。在年度页面中,我希望每年显示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 个答案:

答案 0 :(得分: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];