iOS 獲取 UILabel 的寬度
阿新 • • 發佈:2018-11-15
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 | 22NSStringDrawingTruncatesLastVisibleLine) 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 }