IOS7中动态计算UILable的高度
2024-08-31 04:22:41
.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的值改动。
最新文章
- UNITY更新到5后设置的动画无法播放了怎么办
- 解析大型.NET ERP系统 窗体、查询、报表二次开发
- 学号160809224姓名黄家帅c语言程序设计实验2 选择结构程序设计
- ALITUM DESIGNER 多PIN脚IC元件封装的制作
- Particle Editor 无法启动此程序,因为计算机中丢失MSCP110.dll。尝试重新安装该程序以解决此问题。
- uva 10718 Bit Mask (位运算)
- Java值创建线程的两种方式对比
- 17.1.1.8?Setting Up Replication with Existing Data设置复制使用存在的数据
- mysql主从复制-异步复制
- Multimodal —— 看图说话(Image Caption)任务的论文笔记(一)评价指标和NIC模型
- Swagger文档添加file上传参数写法
- Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class cn.e3mall.pojo.TbItem
- bzoj3224Tyvj 1728 普通平衡树 treap
- ML.NET 示例:推荐之矩阵分解
- 异步fifo的Verilog实现
- Pinpoint是一个开源的 APM (Application Performance Management/应用性能管理)工具,用于基于java的大规模分布式系统,基于Google Dapper论文
- 记一次给nginx的web服务器目录加软链接
- hdu4614 Vases and Flowers【线段树】【二分】
- HTML 和 JavaScript 编写简单的 404 界面
- 织梦开启PHP 标签
热门文章
- java_基础知识_字符串练习题_计算两个字符串的最长公共字串长度
- 删除ListView item数据 页面不刷新
- Lazarus 1.44升级到1.6 UTF8处理发生变化了
- 常见Android安装启动失败问题
- C# 打开模态对话框 和打开文件夹
- requirejs(模块化)
- 10.3 io流 正篇 FileReader FileWriter读写代码
- Eclipse调试DEBUG时快速查看某个变量的值的快捷键
- snprintf不能使用";字符串指针";赋值,可以使用字符数组
- LDAP个人理解