根据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;
    }
相关文章
|
JavaScript
文字、图片左右无缝滚动效果--支持拖拽js效果demo效果示例(整理)
文字、图片左右无缝滚动效果--支持拖拽js效果demo效果示例(整理)
|
XML 编解码 API
什么是 SVG?本项目简单分享动画入门的相关知识,并附有相关代码演示,同时文档对SVG等相关内容有比较详细的叙述,如vector标签中属性所代表的意义解释、path标签所支持的指令解释等等。
什么是 SVG?本项目简单分享动画入门的相关知识,并附有相关代码演示,同时文档对SVG等相关内容有比较详细的叙述,如vector标签中属性所代表的意义解释、path标签所支持的指令解释等等。
141 0
什么是 SVG?本项目简单分享动画入门的相关知识,并附有相关代码演示,同时文档对SVG等相关内容有比较详细的叙述,如vector标签中属性所代表的意义解释、path标签所支持的指令解释等等。
|
前端开发 定位技术 容器
HTML之图像,表格,列表,区块(笔记小结)
HTML之图像,表格,列表,区块(笔记小结)
132 0
HTML之图像,表格,列表,区块(笔记小结)
|
前端开发 JavaScript
【前端】【探究】HTML - input类型为file时如何实现自定义文本以更好的美化
【前端】【探究】HTML - input类型为file时如何实现自定义文本以更好的美化
168 0
【前端】【探究】HTML - input类型为file时如何实现自定义文本以更好的美化
|
前端开发
17、前端开发:HTML知识补充——表格标签
17、前端开发:HTML知识补充——表格标签
187 0
|
移动开发 前端开发 小程序
【笔记】纯css实现列表水平滑动(图片或文字内容不限)
纯css实现列表水平滑动(图片或文字内容不限)
337 0
HTML——input标记的典型应用(制作简单信息表单)
HTML——input标记的典型应用(制作简单信息表单)
174 0
HTML——input标记的典型应用(制作简单信息表单)