1 /**
2 * 获取高度
3 *
4 * @param font 目标字体
5 * @param width 约束宽度
6 *
7 * @return 目标高度
8 */
9 - (CGFloat)ptv_heightWithFont:(UIFont *)font constrainedToWidth:(CGFloat)width {
10 UIFont *textFont = font ? font : [UIFont systemFontOfSize:[UIFont systemFontSize]];
11
12 CGSize textSize;
13
14 #if __IPHONE_OS_VERSION_MIN_REQUIRED < 70000
15 if ([self respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)]) {
16 NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
17 paragraph.lineBreakMode = NSLineBreakByWordWrapping;
18 NSDictionary *attributes = @{NSFontAttributeName: textFont,
19 NSParagraphStyleAttributeName: paragraph};
20 textSize = [self boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX)
21 options:(NSStringDrawingUsesLineFragmentOrigin |
22 NSStringDrawingTruncatesLastVisibleLine)
23 attributes:attributes
24 context:nil].size;
25 } else {
26 textSize = [self sizeWithFont:textFont
27 constrainedToSize:CGSizeMake(width, CGFLOAT_MAX)
28 lineBreakMode:NSLineBreakByWordWrapping];
29 }
30 #else
31 NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
32 paragraph.lineBreakMode = NSLineBreakByWordWrapping;
33 NSDictionary *attributes = @{NSFontAttributeName: textFont,
34 NSParagraphStyleAttributeName: paragraph};
35 textSize = [self boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX)
36 options:(NSStringDrawingUsesLineFragmentOrigin |
37 NSStringDrawingTruncatesLastVisibleLine)
38 attributes:attributes
39 context:nil].size;
40 #endif
41
42 return ceil(textSize.height);
43 }