根据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;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容