计算一段文字内容的size+系统版本判断

注: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的数值是有限的

posted @ 2014-10-19 14:43  纠纠结结  阅读(181)  评论(0编辑  收藏  举报