根据字体多少使UILabel自动调节尺寸
原文:http://blog.csdn.net/enuola/article/details/8559588
在大多属性情况下,给UILabel进行动态数据绑定的时候,往往需要根据字符串的多少,动态调整UILabel的宽度或高度。
下面分两种情况考虑:
1、UILabel宽度不变,根据字体多少,自动调整UILabel的高度,并折行显示。
代码如下:
- UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 10, 200, 20)];
- label.font = [UIFont boldSystemFontOfSize:20.0f]; //UILabel的字体大小
- label.numberOfLines = 0; //必须定义这个属性,否则UILabel不会换行
- label.textColor = [UIColor whiteColor];
- label.textAlignment = NSTextAlignmentLeft; //文本对齐方式
- [label setBackgroundColor:[UIColor redColor]];
- //宽度不变,根据字的多少计算label的高度
- NSString *str = @"可以更改此内容进行测试,宽度不变,高度根据内容自动调节";
- CGSize size = [str sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
- //根据计算结果重新设置UILabel的尺寸
- [label setFrame:CGRectMake(0, 10, 200, size.height)];
- label.text = str;
- [self.view addSubview:label];
- [label release];
2、UILabel高度不变,根据字体多少,自动调整UILabel的宽度,并折行显示
代码如下:
- UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 10, 20, 20)];
- label.font = [UIFont boldSystemFontOfSize:20.0f]; //UILabel的字体大小
- label.numberOfLines = 0; //必须定义这个属性,否则UILabel不会换行
- label.textColor = [UIColor whiteColor];
- label.textAlignment = NSTextAlignmentLeft; //文本对齐方式
- [label setBackgroundColor:[UIColor redColor]];
- //高度固定不折行,根据字的多少计算label的宽度
- NSString *str = @"高度不变获取宽度,获取字符串不折行单行显示时所需要的长度";
- CGSize size = [str sizeWithFont:label.font constrainedToSize:CGSizeMake(MAXFLOAT, label.frame.size.height)];
- NSLog(@"size.width=%f, size.height=%f", size.width, size.height);
- //根据计算结果重新设置UILabel的尺寸
- [label setFrame:CGRectMake(0, 10, size.width, 20)];
- label.text = str;
- [self.view addSubview:label];
- [label release];
其中两种情况,核心代码均为size处的代码,均要把对应的size设置为MAXFLOAT
根据字体多少使UILabel自动调节尺寸的更多相关文章
- iOS性能优化之内存(memory)优化
https://www.jianshu.com/p/8662b2efbb23 近期在工作中,对APP进行了内存占用优化,减少了不少内存占用,在此将经验进行总结和分享,也欢迎大家进行交流. 在优化的过程 ...
- iOS开发小技巧--即时通讯项目:使用富文本在UILabel中显示图片和文字;使用富文本占位显示图片
Label借助富文本显示图片 1.即时通讯项目中语音消息UI的实现,样式如图: 借助富文本在UILabel中显示图片和文字 // 1.创建一个可变的富文本 NSMutableAttributedStr ...
- 根据字符串计算UILabel尺寸
iOS开发中经常会遇到UILabel大小尺寸不固定的情况,需要根据文字内容变化,这时候就需要计算文字大小以自动改变UILabel的尺寸. iOS7之后计算尺寸只需要一个方法就可以: - (CGSize ...
- 修改 cmd 控制台字体、巧用 FontLink 使中英文独立设置
众所周知,Windows 中 cmd 控制台窗口的字体难看,但是修改注册表是可以实现修改其字体的,但很多很棒的编程字体是没有中文的,所以在显示中文时直接调用了宋体,这绝妙的反差实在是 不忍直视.但是, ...
- iPhone:动态获取UILabel的高度和宽度
转自:http://www.cnblogs.com/spiritstudio/archive/2011/11/17/2252074.html 在使用UILabel存放字符串时,经常需要获取label的 ...
- UIKit框架之UIlabel
1.继承链:UIview:UIresponder:NSObject 2.如果你想要使UIlabel能够和用户进行互动,需要把它实例变量的属性 userInteractionEnabled改为yes 3 ...
- CSS基础3——使用CSS格式化元素内容的字体
1.CSS属性单位: (1)长度单位:包含绝对长度单位和相对长度单位 绝对长度单位包含:cm.mm.in.pt.pc等. 绝对长度单位最好用于打印输出设备.在仅作为频幕显示时.绝对长度值并没有什么意义 ...
- 【Unity3D】【NGUI】UILabel
原文:http://www.tasharen.com/forum/index.php?topic=6706.0 NGUI讨论群:333417608 概述 UILabel是用来显示文本的脚本,继承自UI ...
- 根据NSString字符串长度自动改变UILabel的frame
相信大家都遇到过这种需求.如果一个不慎,容易做成这个模样: 话不多说,上代码. 1.首先,设置UILabel的相关属性 UILabel *tmpLabel = [[UILabel alloc] ini ...
随机推荐
- TCP长连接的一些事儿
1.TCP的特点以及与应用 TCP提供一种面向连接的.可靠的字节流服务.面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据包之前必须先建立一个TCP连接.TC ...
- laravel 区块继承
看到我的文章感觉有用的话,在评论区下面扣1,能够让我感受到你们的存在,也给我动力继续写的更好,谢谢 定义: 在layouts\admin.blade.php @yield('要定义的区块名') @yi ...
- PetaPoco源代码学习--0.目录贴
2017年3季度后,以人力外包的形式派驻到甲方单位进行项目救急时,接触到了甲方单位的ASP.NET MVC项目的ORM框架,它以PetaPoco(2012年的老版本)进行改造升级的,当初就想学习一下这 ...
- JUC源码阅读参考文章
(飞哥)http://brokendreams.iteye.com/blog/2252081 (熊猫)http://blog.csdn.net/xiaoxufox/article/details/51 ...
- Spring依赖包
spring框架jar包 1.下载spring源包spring地址:http://www.springsource.org/download我下的是spring-framework-3.1.0.REL ...
- oracle的学习笔记(转)
Oracle的介绍 1. Oracle的创始人----拉里•埃里森 2. oracle的安装 [连接Oracle步骤](](https://img2018.cnblogs.com/blog/12245 ...
- POJ3268(KB4-D spfa)
Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 23426 Accepted: 1069 ...
- 天梯赛2016-L2
L2-001. 紧急救援 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在 ...
- 【代码笔记】iOS-自定义选择框(高底强弱)
一,效果图 二,代码. ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewControl ...
- Date类型错误
今天写代码的时候遇到一个很蛋疼的问题,明明实体类写的是Date型,文本框也是date型,数据库中对应的列是dateTime类型,这原本进行数据录入或者是修改这个操作是不应该出错的,但是一时没找到解决的 ...