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 }