iOS7之后苹果推荐使用boundingRectWithSize:的方法来计算文字的宽高,使用这个方法就能动态计算文字的宽高,而不用自己去预算文字需要多宽多高


下面,我们就具体看看这个方法如何使用:

[str boundingRectWithSize:(CGSize) options:(NSStringDrawingOptions) attributes:(nullable NSDictionary<NSString *,id> *) context:(nullable NSStringDrawingContext *)]
第一个参数是可以伸缩的范围,我一般设置宽为屏幕的宽度,高度为MAXFLOAT,高度无限。
第二个参数
NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading 第一次参数,网上说只有用这个才能算出正确的值。第二个参数是为了算高度的。一般来说,两个参数一起使用,就没有错啦
第三个参数是一个字典,字典里面可以设置文字的属性,比如说字体大小,字体颜色,字体排版等等。也可以用这个字典直接设置Label的属性,不一定是用作计算文字宽高。下面会讲到。
第四个参数是设置文本伸缩最小值,但是一般位置为nil


Label中用attributedText设置文字

创建一个attributedText:
lb.attributedText = [[NSAttributedString alloc] initWithString:lb.text attributes:stringArrt];

然后通过stringArrt这个字典来设置文字的属性,上面也说了可以设置Label的文字大小等等,直接上代码:
- (void)viewDidLoad {
[super viewDidLoad];
UILabel *lb = [[UILabel alloc] init];
lb.backgroundColor = [UIColor yellowColor];
lb.numberOfLines = 0;
lb.text = @"倘若东风未嫁人,百花依旧不负卿--HZhenf";
//用于文字的排版
NSMutableParagraphStyle *ns = [[NSMutableParagraphStyle alloc] init];
//首行缩进
// ns.firstLineHeadIndent = 5.0;
//Zapfino这种字体计算出来的宽高就是这么大的,图片中英文f就能看出来
NSDictionary *stringArrt = @{NSFontAttributeName:[UIFont fontWithName:@"Zapfino" size:18.0],NSParagraphStyleAttributeName:ns, NSForegroundColorAttributeName:[UIColor orangeColor]};
CGSize stringSize = [lb.text boundingRectWithSize:CGSizeMake(self.view.bounds.size.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:stringArrt context:nil].size;
lb.attributedText = [[NSAttributedString alloc] initWithString:lb.text attributes:stringArrt];
lb.bounds = CGRectMake(0, 0, stringSize.width, stringSize.height);
lb.center = CGPointMake(self.view.center.x, self.view.center.y);
[self.view addSubview:lb];
}

看到一个小哥哥对文字设置的演示,可以参考这个来对文字设置,http://www.jianshu.com/p/acf27581978c

动态计算Label的宽高+文字设置相关推荐

  1. 动态修改RelativeLayout的宽高

    我们经常会动态修改RelativeLayout的宽高,这样的代码,比较简单,就是修改Relativelayout的LayoutParams就可以.代码一般如下: RelativeLayout ss = ...

  2. android 自定义view 高度,自定义View之宽高的设置,全网最详解

    今天给大家带来的是自定义View,然后如何设置他的宽高,经常用自定义view的程序猿肯定都知道我们在给自定义view设置wrap_content或者match_parent,view都会占满全屏,就想 ...

  3. Blender 插件开发 计算模型长宽高

    模型的长宽高在写一些需要计算的插件时还是挺有用的,可以通过object.dimensions(模型尺寸)知道,可是遇到复数模型组成的物体计算长宽高就比较麻烦了,像我这个模型就是复数子模型组成的,用一个 ...

  4. 动态获取手机屏幕宽高及动态设置控件宽高

    1.获取手机屏幕宽高: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetr ...

  5. js 实现上下拖动改变父 div 的高度,左右上下拖动动态分割孩子的宽高

    1. 需求 实现父 div 里面 左右,上下动态分割 div,并上下改变父 div 的高度,并且宽和高都是按百分比(如图) . 2. 实现原理 2.1 父布局 <div class='hj-wr ...

  6. HTML背景颜色长宽高怎么设置,Dreamweaver 8怎么通过代码设置页面高宽颜色

    Dreamweaver 8怎么通过代码设置页面高宽颜色 dreamweaver 8怎么通过代码设置页面高宽颜色?正常我们使用dw设计网页都是用前台来设计网页的高宽,颜色等,该怎么直接使用代码完成这些设 ...

  7. qtabbar设置不同宽度_前端之css(宽高)设置小技巧

    一.css宽高自适应: 1.宽度自适应: 元素宽度设为100%(块状元素的默认宽度为100%) 注:应用在通栏效果中 2.高度自适应: height:auto;或者不设置高度 3.最小,最大高度,最小 ...

  8. React Native 学习笔记六(关于宽高的设置)

    继续在之前的例子上进行添加 尺寸 1.使用固定的尺寸  设置View容器  和设置自定义的组组件  如果父组件的空间不足  自控件的会出现重叠的情况 示例: import {AppRegistry,S ...

  9. AutoLayout Label 自适应宽高

    前段时间千牛iOS版本也从iOS 6.0开始支持,所以可以正式引入Auto Layout来进行界面布局. 这里记录下在UILabel上应用Auto Layout进行布局的过程. 一.业务场景 用三个U ...

最新文章

  1. 存储过程执行不报错,时间太快,但是执行无效
  2. BCH钱包的“现金”支持比特币现金NFC交易
  3. logging ,re 模块
  4. [剑指offer]面试题42:翻转单词顺序 VS左旋转字符串
  5. java推送数据给安卓,java – 如何从Firebase推送通知中获取数据并将其显示在Android Activity中?...
  6. Settings【学习笔记05】
  7. 全球知名大学课件下载地址汇总
  8. 触发器及其应用实验报告总结_双面喷绘材料的分类及其应用,超全总结!(建议收藏)...
  9. realvnc 6 教程 linux,CentOS 6下VNC的安装与配置
  10. layui表格取消横向滚动条_layui滑动条如何隐藏
  11. 权限细粒度管理(转)
  12. 【Vue2.0】—生命周期函数(十)
  13. java 打牌游戏_java代码-----实现4个人打牌游戏的相关代码。线程
  14. 自己写的一个简单JAVA网络通讯录
  15. 中国气象站点原数据集(1942-2022年3月)
  16. 计算机32位好还是64位好,电脑系统选择32位好,还是64位的好呢?
  17. Ubuntu配置连接android手机
  18. POI导出word表格 office打开没问题 wps打开列有问题
  19. js高级面试题总结(es6)
  20. PC端微信多开bat命令

热门文章

  1. python中的index()函数
  2. 平安科技智能认知的“中台战事”
  3. 文件服务器阈值通知方式,文件服务器资源管理器(FSRM).docx
  4. matlab guide中隐藏坐标轴
  5. CTF-z3简要介绍
  6. 吴恩达机器学习: 单变量线性回归 理论与实践
  7. word一复制就崩溃
  8. linux打patch和patch制作的方法(diff和patch命令)
  9. 第一天给0.01元,第二天给0.02元,以此类推,每一天是前一天的2倍,连续一个月结果
  10. 玩csgo闪退怎么办?Win10玩csgo闪退的解决方法