根据label正文内容动态计算正文的高度

在iOS开发中,有很多地方用到了label的高度自适应,即根据label中text的内容、宽度、以及字体等条件来动态计算label的高度,实现代码如下:

            /*根据传过来的文字内容、字体大小、宽度和最大尺寸动态计算文字所占用的size
              * text 文本内容 
              * fontSize 字体大小
              * maxSize  size(宽度,1000)
              * return  size (计算的size)
              */
    - (CGSize)labelAutoCalculateRectWith:(NSString*)text FontSize:(CGFloat)fontSize MaxSize:(CGSize)maxSize
    {
        NSMutableParagraphStyle* paragraphStyle = [[NSMutableParagraphStyle alloc]init];
       paragraphStyle.lineBreakMode=NSLineBreakByWordWrapping;
        NSDictionary* attributes =@{NSFontAttributeName:[UIFont systemFontOfSize:fontSize],NSParagraphStyleAttributeName:paragraphStyle.copy};
        CGSize labelSize;

          //如果是IOS6.0
        if (![text respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)]){
            labelSize = [text sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:maxSize lineBreakMode:NSLineBreakByWordWrapping];
        }
        //如果系统为iOS7.0
        else
      {
              // iOS7中用以下方法替代过时的iOS6中的sizeWithFont:constrainedToSize:lineBreakMode:方法
            labelSize = [text boundingRectWithSize: maxSize
                                           options: NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading|NSStringDrawingTruncatesLastVisibleLine
                                        attributes:attributes
                                           context:nil].size;
        }
        labelSize.height=ceil(labelSize.height);    
        labelSize.width=ceil(labelSize.width);
        return labelSize;
    }
    转自:<http://www.jianshu.com/p/66ed84801d2f>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值