iOS计算字符串高度


原来的网址:http://www.2cto.com/kf/201506/412655.html



iOS计算字符串高度,有需要的朋友可以参考下。


方法一:ios7.0之前适用

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
  @method 获取指定宽度width,字体大小fontSize,字符串value的高度
  @param value 待计算的字符串
  @param fontSize 字体的大小
  @param Width 限制字符串显示区域的宽度
  @result float 返回的高度
  */
- ( float ) heightForString:(NSString *)value fontSize:( float )fontSize andWidth:( float )width
{
     CGSize sizeToFit = [value sizeWithFont:[UIFont systemFontOfSize:fontSize]
                          constrainedToSize:CGSizeMake(width - 16.0 , CGFLOAT_MAX)
                              lineBreakMode:NSLineBreakByWordWrapping];
         //此处的换行类型(lineBreakMode)可根据自己的实际情况进行设置
     return sizeToFit.height + 16.0 ;
}

方法二:ios7.0及之后适用

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
  @method 获取指定宽度width,字体大小fontSize,字符串value的高度
  @param value 待计算的字符串
  @param fontSize 字体的大小
  @param Width 限制字符串显示区域的宽度
  @result float 返回的高度
  */
- ( float ) heightForString:(NSString *)value andWidth:( float )width{
     //获取当前文本的属性
     NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:value];
     _text.attributedText = attrStr;
     NSRange range = NSMakeRange( 0 , attrStr.length);
     // 获取该段attributedString的属性字典
     NSDictionary *dic = [attrStr attributesAtIndex: 0 effectiveRange:&range];
     // 计算文本的大小
     CGSize sizeToFit = [value boundingRectWithSize:CGSizeMake(width - 16.0 , MAXFLOAT) // 用于计算文本绘制时占据的矩形块
                                                options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading // 文本绘制时的附加选项
                                             attributes:dic        // 文字的属性
                                                context:nil].size; // context上下文。包括一些信息,例如如何调整字间距以及缩放。该对象包含的信息将用于文本绘制。该参数可为nil
     return sizeToFit.height + 16.0 ;
}

 

//注意:再前两种方法中,UITextView在上下左右分别有一个8px的padding,需要将UITextView.contentSize.width减去16像素(左右的padding 2 x 8px)。同时返回的高度中再加上16像素(上下的padding),这样得到的才是UITextView真正适应内容的高度。如代码中 CGSizeMake(width -16.0, CGFLOAT_MAX),return sizeToFit.height + 16.0。UILable中则不用


方法三:通用(推荐)

 

?
1
2
3
4
5
6
7
8
9
10
/**
  @method 获取指定宽度width的字符串在UITextView上的高度
  @param textView 待计算的UITextView
  @param Width 限制字符串显示区域的宽度
  @result float 返回的高度
  */
- ( float ) heightForString:(UITextView *)textView andWidth:( float )width{
      CGSize sizeToFit = [textView sizeThatFits:CGSizeMake(width, MAXFLOAT)];
     return sizeToFit.height;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值