iOS根据文本长度动态计算label的大小
2015-12-03 09:52
375 查看
今天有人问我该怎么根据label.Text的文本,动态计算label的size,因为有的时候,会用到这个功能,例如,再tableView中,动态改变cell的高的的时候,会经常用到,于是,我就简单谢了一个Demo,下面是主要代码:
NSString * labelText = @”这段代码主要是用来测试用的,根据文本内容,动态计算label的高度,这段代码主要是用来测试用的,根据文本内容,动态计算label的高度,这段代码主要是用来测试用的,根据文本内容,动态计算label的高度,”;
UILabel * label = [[UILabel alloc] init];
label.frame = CGRectMake(10, 100, 200, 200);
label.backgroundColor = [UIColor redColor];
label.text = labelText;
CGSize size = [label.text boundingRectWithSize:CGSizeMake(300, MAXFLOAT) options: NSStringDrawingUsesLineFragmentOrigin attributes:[NSDictionary dictionaryWithObject:label.font forKey:NSFontAttributeName] context:nil].size;
NSLog(@”%f”,size.height);
label.frame = CGRectMake(10, 100, size.width, size.height);
label.numberOfLines = 0;
[self.view addSubview:label];
注意:NSDictionary 部分一定要用label.font,这是为了防止计算的时候的属性和label的font的属性不同,计算结果和需要的大小有偏差,如果手动写属性,也可以,但是要把label.font和手写的属性设置相同。
NSString * labelText = @”这段代码主要是用来测试用的,根据文本内容,动态计算label的高度,这段代码主要是用来测试用的,根据文本内容,动态计算label的高度,这段代码主要是用来测试用的,根据文本内容,动态计算label的高度,”;
UILabel * label = [[UILabel alloc] init];
label.frame = CGRectMake(10, 100, 200, 200);
label.backgroundColor = [UIColor redColor];
label.text = labelText;
CGSize size = [label.text boundingRectWithSize:CGSizeMake(300, MAXFLOAT) options: NSStringDrawingUsesLineFragmentOrigin attributes:[NSDictionary dictionaryWithObject:label.font forKey:NSFontAttributeName] context:nil].size;
NSLog(@”%f”,size.height);
label.frame = CGRectMake(10, 100, size.width, size.height);
label.numberOfLines = 0;
[self.view addSubview:label];
注意:NSDictionary 部分一定要用label.font,这是为了防止计算的时候的属性和label的font的属性不同,计算结果和需要的大小有偏差,如果手动写属性,也可以,但是要把label.font和手写的属性设置相同。
相关文章推荐
- 【iOS 学习笔记】iOS中runtime机制
- IOS 多个ImageView图片层叠透明区域点击事件穿透
- IOS-IOS9升级后对于第三方SDK回调的处理变化
- 【iOS学习笔记】iOS中的MVC设计模式
- ios 数据存储
- ios 数据存储
- 【iOS学习笔记】用collectionView解决大量button的性能问题
- IOS-IOS9升级导致shareSDK无法授权、分享、获取信息等问题
- 第三方登录、分享适配 IOS9 系统
- iOS 学习资料整理
- iOS开发-项目新特性
- 通过xmpp 上传头像 -- IOS端
- iOS开发-Xcode插件管理工具Alcatraz的安装和使用
- 使用CAAnimationGroup组合关键帧动画,设置delegate,造成VC无法释放问题
- iOS 页面间几种传值方式(属性,代理,block,单例,通知
- iOS开发之应用设置
- ios 防止按钮快速点击造成多次响应的避免方法。
- iOS开发-AFNetworking 怎样上传数据? 怎样上传模拟表单
- 各个时间段对应使用的Xcode版本以及iOS版本。
- sizeWithFont:方法使用明细