1. 程式人生 > >iOS 獲取 UILabel 的寬度

iOS 獲取 UILabel 的寬度

 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 }