iOS 获取 UILabel串的宽度

Posted 活最好的自己

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

以上是关于iOS 获取 UILabel串的宽度的主要内容,如果未能解决你的问题,请参考以下文章

iOS UILabel讲解以及根据字符串长度自动适应宽度和高度

李洪强iOS开发之动态获取UILabel的bounds

iOS-UILabel根据文本字体大小计算label宽度;以及自适应高度

iOS-限制UILabel宽度自适应的最大宽度

如何使用自动布局在 iOS 中根据文本长度更改 UILabel 宽度

UILabel居中文本CGRect?