注:IOS7弃用sizeWithFont和sizeWithFont:constrainedToSize:lineBreakMode:方法
1.计算一行text内容的size
CGSize timeSize;
if (isIOS7Height) { timeSize = [_timeLabel.text sizeWithAttributes:@{NSFontAttributeName:kNameFont}]; } else { timeSize = [_timeLabel.text sizeWithFont:kNameFont]; // IOS7不推荐使用该方法 }
2.限定宽度,计算一段长内容(如正文)的size
CGSize contentSize;CGFloat contentWidth = 200; // 限定正文的最大宽度UIFont contentFont = [UIFont systemFontOfSize:16]; // 字体大小 if (isIOS7OrHeight) { NSDictionary *attrib = @{NSFontAttributeName: contentFont}; // MAXFLOAT(值很大)为最大的高度,可以认为高度不限 contentSize = [_dataDict[@"content"] boundingRectWithSize:CGSizeMake(contentWidth, MAXFLOAT) options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attrib context:nil].size; } else { contentSize = [_dataDict[@"content"] sizeWithFont:kContentFont constrainedToSize:CGSizeMake(contentWidth, MAXFLOAT)];// IOS7不推荐使用该方法 }
补充:IOS系统版本的判断
CGFloat version = [[[UIDevice currentDevice] systemVersion] floatValue]; NSLog(@"%f", version); if (version >= 7.0) { NSLog(@"ios7.0以上版本"); }
还有另一种较为直接的方法是
#define kIsIOS7Later NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1
不过这种方法就没那么准确,因为NSFoundationVersionNumber的数值是有限的
时间: 2024-10-11 00:00:42