[OC] 富文本 AttributedString 以及 用富文本解析html文本
AttributedString
为了便于添加新属性,我们一般初始化 NSMutableAttributedString 类型的富文本。
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是一个富文本"];
当然attrStr还有很多其他的初始化方法,比如initWithData之类的,可以望文生义,不在此赘述。
下面是为富文本增加各种属性的方法,在这里先说明几个数据类型的意义:
① NSMakeRange(X, Y) 从X位开始,长度为Y个字符/汉字的范围。注意字符串的下标是从0开始的。
//修改字体 很显然改字体
[attrStr addAttribute:NSFontAttributeName
value:[UIFont systemFontOfSize:30.0f]
range:NSMakeRange(, )]; //颜色
//文字的颜色 形如:红色的字
[attrStr addAttribute:NSForegroundColorAttributeName
value:[UIColor orangeColor]
range:NSMakeRange(, attrStr.length)];
//文字背景颜色 形如:红色背景的字
[attrStr addAttribute:NSBackgroundColorAttributeName
value:[UIColor redColor]
range:NSMakeRange(, attrStr.length)]; //下划线 下划线的字
[attrStr addAttribute:NSUnderlineStyleAttributeName
value:@(NSUnderlineStyleSingle)
range:NSMakeRange(, )]; //删除线 带删除线的字
//黑色删除线
[attrStr addAttribute:NSStrikethroughStyleAttributeName
value:@(NSUnderlinePatternSolid | NSUnderlineStyleSingle)
range:NSMakeRange(, )];
//也可以自定义删除线的颜色
[attrStr addAttribute:NSStrikethroughColorAttributeName
value:[UIColor redColor]
range:NSMakeRange(, )]; /*
调整到基准线的距离
用于 比如前面字体比后面的字体要大,但是需要小字体的内容垂直方向上居中
value为正向上偏,为负向下偏
*/
[attrStr addAttribute:NSBaselineOffsetAttributeName
value:@(10.0) //此处上移的距离可以根据 0.5*(大字体字号-小字体字号) 来大致推算
range:NSMakeRange(3, 2)];
//段落,行距等格式
//需要先建立一个格式的数据
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
// 行间距
paragraphStyle.lineSpacing = ;
// 段落间距(以换行符为判断段落的依据)
paragraphStyle.paragraphSpacing = ;
// 段落缩进像素
paragraphStyle.firstLineHeadIndent = ;
// 整体缩进像素
paragraphStyle.headIndent = ;
// 对齐方式
paragraphStyle.alignment = NSTextAlignmentLeft;
//为富文本添加格式
[attrStr addAttribute:NSParagraphStyleAttributeName
value:paragraphStyle
range:NSMakeRange(, attrStr.length)];
用富文本解析html文本
//html文本处理函数,输入html文本内容
- (NSAttributedString *)attributedStringWithHTMLString:(NSString *)htmlString
{
//转换参数
NSDictionary *options = @{ NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute :@(NSUTF8StringEncoding) };
//将html文本转换为正常格式的文本
NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUnicodeStringEncoding] options:options documentAttributes:nil error:nil];
//以下三个设置其实不是必要的,只是为了让解析出来的html文本更好看。
//设置段落格式
NSMutableParagraphStyle *para = [[NSMutableParagraphStyle alloc] init];
para.lineSpacing = ;
para.paragraphSpacing = ;
[attStr addAttribute:NSParagraphStyleAttributeName value:para range:NSMakeRange(, attStr.length)];
//颜色
[attStr addAttribute:NSForegroundColorAttributeName
value:HEXCOLOR(0x9b9b9b)
range:NSMakeRange(, attStr.length)];
//字体
[attStr addAttribute:NSFontAttributeName
value:MFPFFONT_REGULAR()
range:NSMakeRange(, attStr.length)];
return attStr;
}
[OC] 富文本 AttributedString 以及 用富文本解析html文本的更多相关文章
- CDATA(不应由XML解析器进行解析的文本数据)、CDATA的使用场景
1.1. CDATA: CDATA(Unparsed Character Data)指的是不应由XML解析器进行解析的文本数据. 因为XML解析器会将“<”(新元素的开始)和“&”(字符 ...
- BERT解析及文本分类应用
目录 前言 BERT模型概览 Seq2Seq Attention Transformer encoder部分 Decoder部分 BERT Embedding 预训练 文本分类试验 参考文献 前言 在 ...
- jquery操作select下拉框的各种方法,获取选中项的值或文本,根据指定的值或文本选中select的option项等
简介jquery里对select进行各种操作的方法,如联动.取值.根据值或文本来选中指定的select下拉框指定的option选项,读取select选中项的值和文本等. 这一章,站长总结一下jquer ...
- AWS机器学习初探(2):文本翻译Translate、文本转语音Polly、语音转文本Transcribe
AWS机器学习初探(1):Comprehend - 自然语言处理服务 这几个服务的功能和使用都很直接和简单,因此放在一篇文章中介绍. 1. 文本翻译服务 Translate 1.1 功能介绍 AWS ...
- 浅谈NLP 文本分类/情感分析 任务中的文本预处理工作
目录 浅谈NLP 文本分类/情感分析 任务中的文本预处理工作 前言 NLP相关的文本预处理 浅谈NLP 文本分类/情感分析 任务中的文本预处理工作 前言 之所以心血来潮想写这篇博客,是因为最近在关注N ...
- cut命令用于按“列”提取文本字符,格式为“cut [参数] 文本”
8.cut命令 cut命令用于按"列"提取文本字符,格式为"cut [参数] 文本". 在Linux系统中,如何准确地提取出最想要的数据,这也是我们应该重点学习 ...
- iOS - 富文本AttributedString
最近项目中用到了图文混排,所以就研究了一下iOS中的富文本,打算把研究的结果分享一下,也是对自己学习的一个总结. 在iOS中或者Mac OS X中怎样才能将一个字符串绘制到屏幕上呢? ...
- Python:解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比
pdf 是个异常坑爹的东西,有很多处理 pdf 的库,但是没有完美的. 一.pdfminer3k pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本. ...
- textwrap——文本包裹和填充模块解析
textwrap模块提供了两个函数wrap()和fill(),以及TextWrapper类,以及另外一个工具函数dedent(). wrap()以及fill()都可以用来格式化一大段文 ...
随机推荐
- <HTML>初识HTML
最近在阅读Head first HTML and CSS, 写一些笔记. 小知识: 1. 浏览器会忽略HTML文档中的制表符,回车和大部分空格——要用标记 2. WYSIWYG——使得用户在视图中 ...
- SQL SERVER服务器登录名、角色、数据库用户、角色、架构的关系
原创链接:https://www.cnblogs.com/junfly/articles/2798023.html SQL SERVER 基础教程中关于服务器登录名.服务器角色.数据库用户.数据库角色 ...
- python学习06
流控制 和函数 1)流控制 1.条件语句 if elif else if else 2.循环语句 while for 3.continue 和break continue是跳过本次循环,执行下一次循 ...
- 请求数据loading
请求数据加载,CSS3实现 HTML: <!--请求数据loading--> <div class="back_loading"> <div clas ...
- Ubuntu18.04格式化U盘为NTFS的方法
1.先安装工具ntfs-3g sudo apt-get install ntfs-3g 2.找到需要格式化的U盘在系统中的序号 df -h 找到U盘的序列号后记下来,例如“/dev/sdd1” 3.解 ...
- 【1】学习C++时,一些零散知识点01
1.编程理念 学习从学习完C后,接触了C++,最重要的便是编程理念的转变.C缩重视的是结构化编程,面对一个较大的程序,就将他分解成小型.便于管理的任务,如果分解后的任务还是偏难过大的话,那将这个任务继 ...
- HttpUtility.UrlEncode()关于空格的编码问题
因为 HttpUtility.UrlEncode 在 Encode 的时候, 将空格转换成加号"+", 在 Decode 的时候将"+"号转为空格, 但是浏览器 ...
- day07 数据类型间的相互转化及字符编码
今日内容: 字符间的相互转化 字符编码 今日重点: 字符间的相互转化 """ 字符间的相互转化: """ """ ...
- Spring Cloud 2-Zuul 网关服务(六)
Spring Cloud Zuul 1.pom.xml 2.application.yml Application.java 1.pom.xml <!-- zuul 网关服务 --> ...
- 什么时候Python的List,Tuple最后一个Item后面要加上一个逗号
为什么看Python的代码,有时候会在数据结构的最后一项末尾加上逗号.直接来看,这个逗号很多余. 根据PEP81的解释: Trailing commas are usually optional, e ...
