计算富文本的高度 在app中我们最常见的就是把一段文字要设置行间距、所占宽度、字体大小。并且这些都是我们来计算富文本高度和设置富文本样式必须的元素。当然可能还有首行缩进等元素。我们这里就不考虑了。

设置富文本显示

这里我使用的对NSString的延展封装了一个工具类,方便快捷好用、还好学。

延展结构图.png

设置段落样式(不考虑首行缩进情况)

/***  设置段落样式**  @param lineSpacing 行高*  @param textcolor   字体颜色*  @param font        字体**  @return 富文本*/
-(NSAttributedString *)stringWithParagraphlineSpeace:(CGFloat)lineSpacingtextColor:(UIColor *)textcolortextFont:(UIFont *)font {// 设置段落NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];paragraphStyle.lineSpacing = lineSpacing; // NSKernAttributeName字体间距NSDictionary *attributes = @{ NSParagraphStyleAttributeName:paragraphStyle,NSKernAttributeName:@1.5f};NSMutableAttributedString * attriStr = [[NSMutableAttributedString alloc] initWithString:self attributes:attributes]; // 创建文字属性NSDictionary * attriBute = @{NSForegroundColorAttributeName:textcolor,NSFontAttributeName:font};[attriStr addAttributes:attriBute range:NSMakeRange(0, self.length)];return attriStr;
}

计算富文本字体高度

/***  计算富文本字体高度**  @param lineSpeace 行高*  @param font       字体*  @param width      字体所占宽度**  @return 富文本高度*/
-(CGFloat)getSpaceLabelHeightwithSpeace:(CGFloat)lineSpeace withFont:(UIFont*)font withWidth:(CGFloat)width {NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];  //    paraStyle.lineBreakMode = NSLineBreakByCharWrapping;/** 行高 */paraStyle.lineSpacing = lineSpeace;// NSKernAttributeName字体间距NSDictionary *dic = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paraStyle, NSKernAttributeName:@1.5f};CGSize size = [self boundingRectWithSize:CGSizeMake(width,MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;return size.height;
}

各位看官来看看怎么使用滴

最多的场景就是我们要算出这个富文本的高度去做一些事情。我们这里算出富文本的高度来让他充分的显示完成

设置一个富文本
// 没有设置Frma,我们要根据他的自身的大小来设置
UILabel *label=[[UILabel alloc]init];
label.backgroundColor=[UIColor grayColor];
label.numberOfLines=0;
[self.view addSubview:label];
NSString * conts = @"公元前3000年,印度河流域的居民的数字使用就已经比较普遍,居民们采用了十进位制的计算法。到吠陀时代(公元前1500~公元前500年),雅利安人已意识到数字在生产活动和日常生活中的作用,创造了一些简单的、不完全的数字。\n\n公元前3世纪,印度出现了整套的数字,但各地的写法不一,其中最典型的是婆罗门式,它的独到之处就是从1~9每个数都有专用符号,现代数字就是从它们中脱胎而来的。\n当时,“0”还没有出现。到了笈多时代(300~500年)才有了“0”,叫“舜若”(shunya),表示方式是一个黑点“●”,后来衍变成“0”。\n这样,一套完整的数字便产生了。这项劳动创作也对世界文化做出了巨大的贡献。lll";//设置富文本显示,
label.attributedText = [conts stringWithParagraphlineSpeace:6 textColor:[UIColor redColor] textFont:[UIFont systemFontOfSize:15]];
计算富文本的高度,并设置其高度
// 计算富文本的高度
CGFloat contHeight = [conts getSpaceLabelHeightwithSpeace:6 withFont:[UIFont systemFontOfSize:15] withWidth:300];
label.frame = CGRectMake(0, 50, 300, contHeight);
文/洲洲哥(简书作者)
原文链接:http://www.jianshu.com/p/76cf230cfa31

iOS-[NSAttributedString]设置富文本和计算富文本高度相关推荐

  1. java精确测量文本高度_基于文本精确计算UITableViewCell的高度

    我正在开发一个ios应用程序,并使用autolayout我正在尝试创建一个具有不同行高的表视图 . 原型单元的布局如下: 我有一个主单元格(黑色)里面有一个UIView(红色),里面有一个UILabe ...

  2. iOS开发 UILabel 详细介绍(属性+富文本)

    UILabel是iOS开发中最常用的一种标签了,在开发过程中,会用到各种个样的标签属性,一段文字中变颜色或者字体的样式等(这些都是富文本中的内容,用于美化文字),下面就让我来给大家做一个详细的UILa ...

  3. ios html字符串 label,iOS UIlabel怎么加载html字符串 富文本的用法

    要加载html字符串,用人说,直接用webView啊!但是,有时候我们只需要显示2行文字,如此少的内容却要在复杂的UI排版中加入一个占用资源较多的webview,得不偿失.这里要说的是,我们其实可以用 ...

  4. PMEdit一个富文本框可以编辑文本、图片并可以显示GIF动画

    一.在开始之前首先吐槽一下,本人是一个独立开发者,在中国独立开发者就代表一个比较苦逼的行业,特别是对底层东西进行开发者,尤其本人研究方向是编译器.解析器基本上没有公司要,所以出来做个独立开发者.作为独 ...

  5. yylabel html富文本,YYLabel 自动布局 富文本文字点击事件

    YYLabel显示多行除了需要设置numberOfLines = 0以外,还需要设置preferredMaxLayoutWidth最大的宽度值才可以生效多行效果 YYLabel中的NSMutableA ...

  6. PMEdit一个富文本框可以编辑文本、并可以显示GIF动画

    PMEdit一个富文本框可以编辑文本.并可以显示GIF动画 发布时间:2013-04-14 发布来源: 护士必必要有同情心和一双愿意工作的手. 一.在开端之前起首吐槽一下,本人是一个自力开辟者,在中国 ...

  7. 从html富文本中提取纯文本

    其实从html富文本中提取纯文本很简单,富文本基本上是使用html标签给文本加上丰富多彩的样式. 所以只需要将富文本字符串中的"<.....>"标签剔除,即可得到纯文本 ...

  8. PHP开发小技巧①⑥—提取富文本字符串中的文本内容

    综述 富文本在我们平常的项目中应用已经很广泛了,并逐渐发展成了一个行业.最近在项目中遇到需要提取富文本字符串中的文本内容,本篇博文就是记述如何重富文本字符串中提取出文本内容,欢迎大家相互学习. 富文本 ...

  9. unity学习笔记-text文本识别html富文本(待改进)

    unity学习笔记 text文本识别html富文本(待改进) 需求 逻辑 实现 xlua的安装 配置到unity 使用 改进优化(待改进) text文本识别html富文本(待改进) 需求 项目里需要将 ...

最新文章

  1. C++中的虚继承与虚基类
  2. Java 17正式发布, Oracle宣布免费提供!“版本任你发,我用Java 8”或成历史?...
  3. 如何让不懂信息化的甲方客户看懂需求文档,并确认签字?
  4. 【编辑器】VSCode的Web前端(html,css,JavaScript)开发环境打造
  5. HBuilder Android APP打包发布
  6. ArcGIS 制作林地成分栅格数据
  7. 转:Python网页解析:BeautifulSoup vs lxml.html
  8. 南阳oj-----汉诺塔(三)(stack)
  9. 制作Web动画——动画制作工具Flash MX
  10. 霍尼韦尔扫描枪设置手动方法
  11. python3总结和spider爬虫
  12. 《大江大河2》中教科书般的精神自救-如何让反感你的人欣赏你
  13. 不习惯的 Vue3 起步六 の Echarts绘制下钻地图
  14. Maxent模型学习
  15. 跨模态行人重识别:Deep Learning for Person Re-identification:A Survey and Outlook(行人重识别综述)
  16. i3 10100f和i5 9400f哪个好?
  17. Logisticregression学习
  18. x86跑android,ARM跑Win,X86跑安卓,为什么两种架构互相“踢馆”?
  19. 6. Z 字形变换(给定字符串,画N后逐行拼接成新字符串)
  20. Python 用print打印五彩斑斓、花里胡哨的文字,让你的print骚起来。

热门文章

  1. 流利阅读2019.1.4 Secrets of the booming beauty business
  2. 哈工大2022计算机系统大作业
  3. 清橙OJ A1046 加法器
  4. zznuoj-1003
  5. 华为服务器RH2288做raid方法
  6. Elasticsearch应用案例1:百度
  7. 职场打拼小妙招,建议你们收藏使用!
  8. 哪一种语言最流行?VB,C++,JAVA? (转)
  9. hadoop系列四:mapreduce的使用(二)
  10. 真正的高手,都在刻意练习