我正在做日历应用。在年度页面中,我希望每年显示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,这听起来很愚蠢。
请有人帮助我!
答案 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];