原文: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. 【JS点滴】substring和substr以及slice和splice的用法和区别。

    那么就由一道笔试题引入吧,已知有字符串a=”get-element-by-id”,写一个function将其转化成驼峰表示法”getElementById”: var a = "get-el ...

  2. 进程监控工具supervisor

    supervisor是一个python编写的进程管理工具, 可以方便的管理和监控进程. supervisor分为服务端supervisord和客户端supervisorctl. supervisor由 ...

  3. AngularJS学习笔记(三)数据双向绑定

    双向绑定 双向绑定是AngularJS最实用的功能,它节省了大量的代码,使我们专注于数据和视图,不用浪费大量的代码在Dom监听.数据同步上,关于双向更新,可看下图: 下面,我们通过代码来实现.先不要纠 ...

  4. Scott用户的表结构

    在Oracle的学习之中,重点使用的是SQL语句,而所有的SQL语句都要在scott用户下完成,这个用户下一共有四张表,可以使用: SELECT * FROM tab; 查看所有的数据表的名称,如果现 ...

  5. 几点建议,让Redis在你的系统中发挥更大作用

    Redis在很多方面与其他数据库解决方案不同:它使用内存提供主存储支持,而仅使用硬盘做持久性的存储:它的数据模型非常独特,用的是单线程.另一个大区别在于,你可以在开发环境中使用Redis的功能,但却不 ...

  6. Eclipse中导入外部jar包步骤

    昨天,学习了Jar包的打包过程,现在打算记录一下,如何在Eclipse中导入外部Jar包. 第一步:在项目中鼠标右键>>New>>点击Folder. 第二步:在弹出窗口将Fol ...

  7. JAVA项目工具包集合

    本文包括工具的下载以及配置,持续更新中…… 1 JDK 官网:https://www.oracle.com 下载:https://www.oracle.com/technetwork/java/jav ...

  8. Android - 网络基础

    Android网络编程(一)HTTP协议原理 Android网络请求心路历程 HttpURLConnection和HttpClient对比: http://blog.csdn.net/guolin_b ...

  9. php两个多维数组组合遍历

    $res = $this->LoanRecord->searchloan($conditions,$columns,$page,$this->num,$user_id); forea ...

  10. influxdb-1.7.2.x86_64安装 install influxdb-1.7.2.x86_64 on RedHat & CentOS

    1.下载安装 wget http://dl.influxdata.com/influxdb/releases/influxdb-1.7.2.x86_64.rpm https://portal.infl ...