[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()都可以用来格式化一大段文 ...
随机推荐
- Phoenix(SQL On HBase)
1.简介 Phoenix是一个HBase框架,可以通过SQL的方式来操作HBase. Phoenix是构建在HBase上的一个SQL层,是内嵌在HBase中的JDBC驱动,能够让用户使用标准的JDBC ...
- HttpServletRequest基础
一.请求行 二.请求消息头 三.请求正文(重要) 1.获取表单(request)提交的数据 (1)getParameter(name):根据表单name属性的名字,获取name的值 (2)getPar ...
- 前端面试题整理—Node篇
1.node有哪些特征,与其他服务器端对比 特征:单线程.事件驱动.非阻塞I/O node 无法直接渲染静态页面,提供静态服务 node 没有根目录的概念 node 必须通过路由程序指定文件才能渲染文 ...
- jenkins 自动化部署执行shell
# -*- coding:utf-8 _*-""" @author:Administrator @file: new_app_publish.py @time: 2018 ...
- antd table 点击行触发radio 或 checkbox
UIStore.ts (使用mobx) 1 import { observable, action, computed } from 'mobx' export class UIStore { @o ...
- 初识springboot(傻瓜式教程)
初识springboot(傻瓜式教程) 项目所需的版本 IDEA 2018 maven 3.x jdk-1.8 IDEA创建spring-boot项目(maven方法) 1.创建一个maven工程 点 ...
- css3新单位vw、vh、vmin、vmax的使用详解(转载)
文章传送门: https://blog.csdn.net/ZNYSYS520/article/details/76053961
- Pytorch学习笔记(一)Numpy SciPy MatPlotlib Tutorial
英文原文链接:http://cs231n.github.io/python-numpy-tutorial/ Numpy Numpy是Python中科学计算的核心库.它提供了一个高性能的多维数组对象,以 ...
- Nginx开启gzip压缩解决react打包文件过大
用create-react-app创建的react应用打包之后的build js有1M之多. 采用gzip打包传输,可以节约70%左右的带宽 nginx采用gzip打包方式 在nginx配置中添加如下 ...
- HDU - 1062
格式错误2遍:没考虑到连续两个空格的情况,遇到空格最后要输出这个空格,因为题目只需要转换单词. 另外,开cin,cout加速要注意读入不能用scanf,printf,puts,getchar这些.ge ...
