.h文件

#import <UIKit/UIKit.h>

@interface UILabel (ContentSize)

- (CGSize)contentSize;

@end

.m文件

#import "UILabel+ContentSize.h"

@implementation UILabel (ContentSize)

- (CGSize)contentSize {
NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = self.lineBreakMode;
paragraphStyle.alignment = self.textAlignment; NSDictionary * attributes = @{NSFontAttributeName : self.font,
NSParagraphStyleAttributeName : paragraphStyle}; CGSize contentSize = [self.text boundingRectWithSize:CGSizeMake(self.frame.size.width, MAXFLOAT)
options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading)
attributes:attributes
context:nil].size;
return contentSize;
}
@end

这个类是在别人的基础上改动的

以下是详细的实现:

 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 280, 20)];
label.font = [UIFont boldSystemFontOfSize:15.0f]; //UILabel的字体大小
label.numberOfLines = 0; //必须定义这个属性,否则UILabel不会换行
label.textColor = [UIColor whiteColor];
label.textAlignment = NSTextAlignmentLeft; //文本对齐方式
[label setBackgroundColor:[UIColor redColor]];
label.lineBreakMode = NSLineBreakByWordWrapping; NSLog(@"%d",label.lineBreakMode);
//宽度不变,依据字的多少计算label的高度
NSString *str = @"伴随着张震岳的这首老歌,仿佛我又回到了过去,回到了大学即将分别的日子,带着不舍与迷惘和他们说再见。又是一年毕业季,看着朋友圈各种晒毕业照,毕业旅行照,学士帽漫天的飞舞。各种送别活动在鲜花和掌声中慢慢退去色彩,心里不时充满着各种思念。离开校园整整一年了,每当和别人谈起母校各种自豪,大学生活各种多彩。人生经历各种丰富,事实上内心还是留有种种遗憾;四年的蹉跎时光,有人收获了知识。有人收获了人生阅历,还有人收获了爱情,而我收获的仅仅有那清纯的友谊,兄弟情。 分别整整一年了,还记得那时我们都是多么的不舍,同学情,兄弟情,混合着酒精流到心里,一米八几的大男孩哭的稀里哗啦,拥抱着说再见;之后的我们离开了熟悉的校园,奔赴在各个工作岗位。去体现自己的价值,为生活而忙碌着;一转身。有些人真的就再也不见。 毕业一周年,你们还好吗?工作还顺利吗?学习还顺心吗?一切都回不了头,仅仅能在心里默默地想着你们,希望你们安好。 。。";
// CGSize size = [str sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
// //依据计算结果又一次设置UILabel的尺寸
// [label setFrame:CGRectMake(20, 10, 280, size.height)];
// label.text = str;
label.text = str; [label setFrame: CGRectMake(20, 20, 280, [label contentSize].height)]; [self.view addSubview:label];

上面的凝视部分是老的方法。

这里要注意几点:

1、我在调用contentSize前设置下label.lineBreakMode属性。

2、文字究竟换不换行的关键是设置CGSizeMake(w,h),差别主要在w,h的值改动。

Demo地址



IOS7中动态计算UILable的高度的更多相关文章

  1. iOS中动态计算不同颜色、字体的文字高度

    在改项目bug的时候,有一个问题动态计算label的高度,前开发者竟然用字符串长度除以14.16这样的常量来计算是否换行,结果cell的高度问题非常严重. 因为label内容里有部分关键字是要另一种颜 ...

  2. 在AutoLyout中动态获得cell的高度 和 autoLyout中的小随笔

    autoLyout中动态获得cell的高度和autoLyout小总结 一.在autoLyout中通过动态的方式来获取cell 的方式呢? 1.       在布局时候要有对于cell中contentV ...

  3. iOS开发总结-UITableView 自定义cell和动态计算cell的高度

    UITableView cell自定义头文件:shopCell.h#import <UIKit/UIKit.h>@interface shopCell : UITableViewCell@ ...

  4. iOS学习之根据文本内容动态计算文本框高度的步骤

    在视图加载的过程中,是先计算出frame,再根据frame加载视图的,所以在设计计算高度的方法的时候,设计成加号方法; //首先给外界提供计算cell高度的方法 + (CGFloat)heightFo ...

  5. iOS实现页面既显示WebView,WebView下显示TableView,动态计算WebView内容高度

    实现效果如下: 忽略底部的评论视图,太丑了,待完善...... 实现思路: 1>页面布局采用TableView实现,顶部"关注"模块的View是TableView的table ...

  6. css3动态计算元素的高度及宽度

    1.px     像素,我们在网页布局中一般都是用px. 2.百分比     百分比一般宽泛的讲是相对于父元素,自适应网页布局越来越多,百分比也经常用到了 3.Viewport 当已知一个div的高度 ...

  7. swift UILabel多行显示时 计算UILable的高度(可用于UILable高度自适应)

    代码如下 func heightForView(text:String, font:UIFont, width:CGFloat) -> CGFloat{ let label:UILabel = ...

  8. iOS之动态计算文字的高度

    + (CGSize)boundingALLRectWithSize:(NSString *)txt Font:(UIFont *)font Size:(CGSize)size { NSMutableA ...

  9. 转:动态计算UITableViewCell高度详解

    转自:http://www.cocoachina.com/industry/20140604/8668.html   不知道大家有没有发现,在iOS APP开发过程中,UITableView是我们显示 ...

随机推荐

  1. Java Controller下兼容xls和xlsx且可识别合并单元格的excel导入功能

    1.工具类,读取单元格数据的时候,如果当前单元格是合并单元格,会自动读取合并单元格的值 package com.shjh.core.util; import java.io.IOException; ...

  2. Less文件的建立

    1.打开DreamWeaver 2.选择 新建 Less       文件名为.less,保存于Less文件夹中 3.声明文档头:@charset "utf-8"; 4.将Less ...

  3. 【SQLite】select into 语句

    sqlite不支持类似sqlserver中的select into 语法 在SQL Server中,我们要将一个表中的数据复制到一个新表中,可以这样写: SELECT * INTO newtable ...

  4. OpenCV:使用OpenCV3随机森林进行统计特征多类分析

    原文链接:在opencv3中的机器学习算法练习:对OCR进行分类 本文贴出的代码为自己的训练集所用,作为参考.可运行demo程序请拜访原作者. CNN作为图像识别和检测器,在分析物体结构分布的多类识别 ...

  5. iOS 9 中可用的受信任根证书列表

    iOS 受信任证书存储区包含随 iOS 预安装的可信根证书.  https://support.apple.com/zh-cn/HT205205 关于信任和证书 iOS 9 受信任证书存储区包含三类证 ...

  6. anguar相关

    1.创建组件 在某目录下创建组件  ng g c content/membersManage 2.创建服务 在某目录下创建服务  ng g service services/storage 2.创建模 ...

  7. Java中File对象的常用方法

    创建: 1.createNewFile()指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false. 2.mkdir() 在指定位置创建一个单级文件夹. 3.mkdirs() ...

  8. API开发管理平台eoLinker AMS 4.1版本发布:加入聚合空间,发布AMS专业版等

    eoLinker AMS是集API文档管理.API自动化测试.开发协作三位一体的综合API开发管理平台,是中国最大的在线API管理平台. eoLinker AMS 4.1更新内容: 1.新增" ...

  9. iview中Modal弹窗做form表单验证相关问题

    在modal中初始化状态,点击确定弹窗消失. 有的时候表单验证就不希望立刻消失 在iview官网中有自定义页头页脚 可以直接自定义使用 另一种验证写法 serform: { ctCatelogue: ...

  10. [测试工具]----iperf

    iperf https://sourceforge.net/projects/iperf/ http://downloads.es.net/pub/iperf/ https://github.com/ ...