原文:http://blog.csdn.net/enuola/article/details/8559588

在大多属性情况下,给UILabel进行动态数据绑定的时候,往往需要根据字符串的多少,动态调整UILabel的宽度或高度。

下面分两种情况考虑:

1、UILabel宽度不变,根据字体多少,自动调整UILabel的高度,并折行显示。

代码如下:

  1. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 10, 200, 20)];
  2. label.font = [UIFont boldSystemFontOfSize:20.0f];  //UILabel的字体大小
  3. label.numberOfLines = 0;  //必须定义这个属性,否则UILabel不会换行
  4. label.textColor = [UIColor whiteColor];
  5. label.textAlignment = NSTextAlignmentLeft;  //文本对齐方式
  6. [label setBackgroundColor:[UIColor redColor]];
  7. //宽度不变,根据字的多少计算label的高度
  8. NSString *str = @"可以更改此内容进行测试,宽度不变,高度根据内容自动调节";
  9. CGSize size = [str sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
  10. //根据计算结果重新设置UILabel的尺寸
  11. [label setFrame:CGRectMake(0, 10, 200, size.height)];
  12. label.text = str;
  13. [self.view addSubview:label];
  14. [label release];

2、UILabel高度不变,根据字体多少,自动调整UILabel的宽度,并折行显示

代码如下:

  1. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 10, 20, 20)];
  2. label.font = [UIFont boldSystemFontOfSize:20.0f];  //UILabel的字体大小
  3. label.numberOfLines = 0;  //必须定义这个属性,否则UILabel不会换行
  4. label.textColor = [UIColor whiteColor];
  5. label.textAlignment = NSTextAlignmentLeft;  //文本对齐方式
  6. [label setBackgroundColor:[UIColor redColor]];
  7. //高度固定不折行,根据字的多少计算label的宽度
  8. NSString *str = @"高度不变获取宽度,获取字符串不折行单行显示时所需要的长度";
  9. CGSize size = [str sizeWithFont:label.font constrainedToSize:CGSizeMake(MAXFLOAT, label.frame.size.height)];
  10. NSLog(@"size.width=%f, size.height=%f", size.width, size.height);
  11. //根据计算结果重新设置UILabel的尺寸
  12. [label setFrame:CGRectMake(0, 10, size.width, 20)];
  13. label.text = str;
  14. [self.view addSubview:label];
  15. [label release];

其中两种情况,核心代码均为size处的代码,均要把对应的size设置为MAXFLOAT

更多1

 

根据字体多少使UILabel自动调节尺寸的更多相关文章

  1. iOS性能优化之内存(memory)优化

    https://www.jianshu.com/p/8662b2efbb23 近期在工作中,对APP进行了内存占用优化,减少了不少内存占用,在此将经验进行总结和分享,也欢迎大家进行交流. 在优化的过程 ...

  2. iOS开发小技巧--即时通讯项目:使用富文本在UILabel中显示图片和文字;使用富文本占位显示图片

    Label借助富文本显示图片 1.即时通讯项目中语音消息UI的实现,样式如图: 借助富文本在UILabel中显示图片和文字 // 1.创建一个可变的富文本 NSMutableAttributedStr ...

  3. 根据字符串计算UILabel尺寸

    iOS开发中经常会遇到UILabel大小尺寸不固定的情况,需要根据文字内容变化,这时候就需要计算文字大小以自动改变UILabel的尺寸. iOS7之后计算尺寸只需要一个方法就可以: - (CGSize ...

  4. 修改 cmd 控制台字体、巧用 FontLink 使中英文独立设置

    众所周知,Windows 中 cmd 控制台窗口的字体难看,但是修改注册表是可以实现修改其字体的,但很多很棒的编程字体是没有中文的,所以在显示中文时直接调用了宋体,这绝妙的反差实在是 不忍直视.但是, ...

  5. iPhone:动态获取UILabel的高度和宽度

    转自:http://www.cnblogs.com/spiritstudio/archive/2011/11/17/2252074.html 在使用UILabel存放字符串时,经常需要获取label的 ...

  6. UIKit框架之UIlabel

    1.继承链:UIview:UIresponder:NSObject 2.如果你想要使UIlabel能够和用户进行互动,需要把它实例变量的属性 userInteractionEnabled改为yes 3 ...

  7. CSS基础3——使用CSS格式化元素内容的字体

    1.CSS属性单位: (1)长度单位:包含绝对长度单位和相对长度单位 绝对长度单位包含:cm.mm.in.pt.pc等. 绝对长度单位最好用于打印输出设备.在仅作为频幕显示时.绝对长度值并没有什么意义 ...

  8. 【Unity3D】【NGUI】UILabel

    原文:http://www.tasharen.com/forum/index.php?topic=6706.0 NGUI讨论群:333417608 概述 UILabel是用来显示文本的脚本,继承自UI ...

  9. 根据NSString字符串长度自动改变UILabel的frame

    相信大家都遇到过这种需求.如果一个不慎,容易做成这个模样: 话不多说,上代码. 1.首先,设置UILabel的相关属性 UILabel *tmpLabel = [[UILabel alloc] ini ...

随机推荐

  1. mysql密码篇(一)

    1.mysql密码样例.用于密码重置: password: e9297341f5073b9e557239592f4540ba690538058e7761822372942119992d0fsalt: ...

  2. git使用总结(包含git commit message 和 changelog 工具的介绍)

    [git的配置] 1.配置用户名和邮箱: 分为全局配置和局部配置 --system 系统配置  --global 全局配置    --local 局部配置 Git读取时:优先从local>glo ...

  3. Travelling Fee(Dijlstra——最短路问题变型)

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2027 题目: Samball is going to trav ...

  4. WPF备忘录(2)WPF获取和设置鼠标位置与progressbar的使用方法

    一.WPF 中获取和设置鼠标位置 方法一:WPF方法 Point p = Mouse.GetPosition(e.Source as FrameworkElement); Point p = (e.S ...

  5. [日常] Go语言圣经--Channel习题

    练习 8.3: 在netcat3例子中,conn虽然是一个interface类型的值,但是其底层真实类型是*net.TCPConn,代表一个TCP连接.一个TCP连接有读和写两个部分,可以使用Clos ...

  6. 开放本地MYSQL服务器端口

    有时候别人需要连接你的数据库,这个时候你就要开放数据库的端口,让别的主机可以连接上,步骤如下: 1.打开防火墙,新建入站规则,开放MySQL3306端口 2.执行以下两个命令: (1)如果你想允许用户 ...

  7. Java - 数组解析

    java提高篇(十八)-----数组之一:认识JAVA数组 一.什么是数组 数组?什么是数组?在我印象中的数组是应该这样的:通过new关键字创建并组装他们,通过使用整形索引值访问它的元素,并且它的尺寸 ...

  8. Java Spring学习笔记----Bean的依赖注入(设值注入方式)1

    Spring常用的两种依赖注入方式:一种是设值注入方式,利用Bean的setter方法设置Bean的属性值:另一种是构造注入,通过给Bean的构造方法传递参数来实现Bean的属性赋值: 1.设值注入方 ...

  9. 老男孩教育python全栈第九期视频

    失效了在下面评论即可,会及时更新.python9期已全部更新完 链接: https://pan.baidu.com/s/1VV8_ZyVasK05iKd7QMxO-A 密码: 9zau

  10. 本地服务器搭建服务:ftp

    开启FTP 服务针对局域网上需要管理的一些文件共享还是有一些帮助的,感兴趣的小伙伴可以尝试下: 1.开启internt 中ftp协议服务 完成即可 -> 可以访问了. tip: UTF-8 选f ...