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

2017-06-23 19:55:17来源:CSDN作者:jsd0915人点击

在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>

微信扫一扫

第七城市微信公众平台