获取字符串的宽度和高度

 1 //1.获取字符串的宽度
 2 -(float) widthForString:(NSString *)value fontSize:(float)fontSize andHeight:(float)height
 3 {
 4     CGSize sizeToFit = [value sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:CGSizeMake(CGFLOAT_MAX, height) lineBreakMode:NSLineBreakByWordWrapping];//此处的换行类型(lineBreakMode)可根据自己的实际情况进行设置
 5     return sizeToFit.width;
 6 }
 7 
 8 
 9 //2.获得字符串的高度
10 -(float) heightForString:(NSString *)value fontSize:(float)fontSize andWidth:(float)width
11 {
12     //之前的写法
13     
14     CGSize sizeToFit = [value sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:CGSizeMake(width, CGFLOAT_MAX) lineBreakMode:NSLineBreakByCharWrapping];//此处的换行类型(lineBreakMode)可根据自己的实际情况进行设置
15     
16      /*
17     //现在的写法
18 
19     NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
20     [style setLineBreakMode:NSLineBreakByCharWrapping];
21     
22     NSDictionary *attributes = @{ NSFontAttributeName : [UIFont systemFontOfSize:10], NSParagraphStyleAttributeName : style};
23     
24     [value boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];
25      
26      */
27      
28     return sizeToFit.height;
29     
30   
31 }

 

 存在不足的地方:

 

boundingRectWithSize: 方法只是取得字符串的size, 如果字符串中包含\n\r 这样的字符,也只会把它当成字符来计算。但放到UITextView中来解析时,会把它变成回车换行符,那么在显示时就会多出一行的高度出来。

而且,使用stringWithFormat才会忽略\n,使用@“”形式不会。

矬点的做法,大体的实际高度 = boundingRectWithSize计算出来的高度 + \n\r出现的次数 * 单行文本的高度

 

posted on 2016-03-31 11:15  玉思盈蝶  阅读(1293)  评论(0编辑  收藏  举报

导航