我正在做一个日历应用程序。在年份页面中,我想显示一年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)创建一个多行标签,设置其宽度。

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

10-08 06:27
查看更多