【改】iOS学习之NSAttributedString(富文本)
NSAttributedString 叫做富文本,是一种带有属性的字符串,通过它可以轻松的在一个字符串中表现出多种字体、字号、字体大小等各不相同的风格,还可以对段落进行格式化,一般都是对可变富文本(NSMutableAttributedString)进行一些操作
一、NSMutableAttributedString 类的部分常用方法
// 在一定范围中添加单个文字属性
// 参数1:字符属性名
// 参数2:属性值
// 参数3:范围
- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range; // 在一定范围中使用字典添加多个文字属性
// 参数1:属性字典
// 参数2:范围
- (void)addAttributes:(NSDictionary<NSString *, id> *)attrs range:(NSRange)range; // 在一定范围中删除文字具有的某个文字属性
// 参数1:字符属性名
// 参数2:范围
- (void)removeAttribute:(NSString *)name range:(NSRange)range; // 在一定范围中替换字符串
// 参数1:范围
// 参数2:要替换的字符串
- (void)replaceCharactersInRange:(NSRange)range withAttributedString:(NSAttributedString *)attrString; // 在对应的角标处插入富文本
// 参数1:要插入的字符串
// 参数2:要插入的角标位置
- (void)insertAttributedString:(NSAttributedString *)attrString atIndex:(NSUInteger)loc; // 将某个富文本拼接到后面
// 参数:要拼接的字符串
- (void)appendAttributedString:(NSAttributedString *)attrString; // 删除一定范围中的字符
// 参数:范围
- (void)deleteCharactersInRange:(NSRange)range; // 将字符串全部置换为另一个富文本字符串
// 参数:置换后的富文本字符串
- (void)setAttributedString:(NSAttributedString *)attrString;
二、字符属性
1.NSString *const NSFontAttributeName(字体):
该属性所对应的值是一个 UIFont 对象。该属性用于改变一段文本的字体。如果不指定该属性,则默认为12-point Helvetica(Neue)。
2.NSString *const NSParagraphStyleAttributeName(段落):
该属性所对应的值是一个 NSParagraphStyle 对象。该属性在一段文本上应用多个属性。如果不指定该属性,则默认为 NSParagraphStyle 的 defaultParagraphStyle 方法返回的默认段落属性。想要了解NSParagraphStyle可以自行百度学习,在这里不详细描述。注意:lable的numberOfLines属性必须设置为0,段落样式才能生效。
3.NSString *const NSForegroundColorAttributeName(字体颜色):
该属性所对应的值是一个 UIColor 对象。该属性用于指定一段文本的字体颜色。如果不指定该属性,则默认为黑色。
4.NSString *const NSBackgroundColorAttributeName(字体背景色):
该属性所对应的值是一个 UIColor 对象。该属性用于指定一段文本的背景颜色。如果不指定该属性,则默认无背景色。
5.NSString *const NSLigatureAttributeName(连字符):
该属性所对应的值是一个 NSNumber 对象(整数)。连体字符是指某些连在一起的字符,它们采用单个的图元符号。0 表示没有连体字符。1 表示使用默认的连体字符。2表示使用所有连体符号。默认值为 1(注意,iOS 不支持值为 2)。
6.NSString *const NSKernAttributeName(字间距):
该属性所对应的值是一个 NSNumber 对象(整数)。连体字符是指某些连在一起的字符,它们采用单个的图元符号。0 表示没有连体字符。1 表示使用默认的连体字符。2表示使用所有连体符号。默认值为 1(注意,iOS 不支持值为 2)。
7.NSString *const NSStrikethroughStyleAttributeName(删除线):
该属性所对应的值是一个 NSNumber 对象(整数)。该值指定是否在文字上加上删除线,该值参考“Underline Style Attributes”。默认值是NSUnderlineStyleNone。
8.NSString *const NSUnderlineStyleAttributeName(下划线):
该属性所对应的值是一个 NSNumber 对象(整数)。该值指定是否在文字上加上下划线,该值参考“Underline Style Attributes”。默认值是NSUnderlineStyleNone。
9.NSString *const NSStrokeColorAttributeName(边线颜色):
该属性所对应的值是一个 UIColor 对象。如果该属性不指定(默认),则等同于 NSForegroundColorAttributeName。否则,指定为删除线或下划线颜色。更多细节见“Drawing attributedstrings that are both filled and stroked”。
10.NSString *const NSStrokeWidthAttributeName(边线宽度):
该属性所对应的值是一个 NSNumber 对象(小数)。该值改变描边宽度(相对于字体size 的百分比)。默认为 0,即不改变。正数只改变描边宽度。负数同时改变文字的描边和填充宽度。例如,对于常见的空心字,这个值通常为3.0。
11.NSString *const NSShadowAttributeName(阴影):
该属性所对应的值是一个 NSShadow 对象。默认为 nil。
12.NSString *const NSVerticalGlyphFormAttributeName(横竖排版):
该属性所对应的值是一个 NSNumber 对象(整数)。0 表示横排文本。1 表示竖排文本。在 iOS 中,总是使用横排文本,0 以外的值都未定义。
三、代码示例
在这里给大家举了几个简单的例子,有兴趣的可以尝试其余属性的效果。
- 字符串没有添加属性
NSString *contentStr = @"Hello World!";
// 初始化属性字符串
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:[contentStr stringByAppendingString:@"\n\n"]];

- 添加单个属性(以字体颜色和字体大小为例)
[attrStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(, )];
[attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:] range:NSMakeRange(, )];

- 使用属性字典添加多个属性
[attrStr addAttributes:@{
NSForegroundColorAttributeName : [UIColor yellowColor],
NSBackgroundColorAttributeName : [UIColor lightGrayColor]
}
range:NSMakeRange(,)];

- 删除属性
[attrStr removeAttribute:NSForegroundColorAttributeName range:NSMakeRange(, )];
[attrStr removeAttribute:NSBackgroundColorAttributeName range:NSMakeRange(, )];

字符串全部替换
NSAttributedString *str = [[NSAttributedString alloc] initWithString:@""];
[attrStr setAttributedString:str];

以上是部分方法的使用,大家有兴趣的可以自己试试其他的方法。
【改】iOS学习之NSAttributedString(富文本)的更多相关文章
- iOS学习之NSAttributedString(富文本)
NSAttributedString 叫做富文本,是一种带有属性的字符串,通过它可以轻松的在一个字符串中表现出多种字体.字号.字体大小等各不相同的风格,还可以对段落进行格式化,一般都是对可变富文本(N ...
- 【转】iOS使用NSMutableAttributedString实现富文本
iOS使用NSMutableAttributedString实现富文本 在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求.之前在网上找了一些资料,有的是重绘 ...
- NSAttributedString富文本简单介绍和常用方法浅析
NSAttributedString基本知识点介绍 1.初始化方法 - (instancetype)initWithString:(NSString *)str; - (instancetype)in ...
- iOS使用NSMutableAttributedString实现富文本小结
NSAttributedString NSAttributedString对象管理适用于字符串中单个字符或字符范围的字符串和关联的属性集(例如字体和字距).NSAttributedString对象的默 ...
- PyQt(Python+Qt)学习随笔:富文本编辑器QTextEdit功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QTextEdit是一个高级的所见即所得的文档查看器和编辑器 ...
- #iOS问题记录# UITextview富文本链接,禁止长按事件
UITextView的富文本组装,添加图片点击事件,启动 - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *) ...
- iOS使用NSMutableAttributedString 实现富文本(不同颜色字体、下划线等)
在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求.之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都比较麻烦 ...
- [转] iOS使用NSMutableAttributedString 实现富文本(不同颜色字体、下划线等)
转自: 在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求.之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都 ...
- NSMutableAttributedString/NSAttributedString 富文本设置
今天在做项目的过程中,我们的设计师想要一种字体四周都带阴影的效果,但是我们平时使用的setShadowColor 和setShadowOffset是达不到这种效果,setShadowOffset 只能 ...
随机推荐
- Shell入门教程:流程控制(1)命令的结束状态
在Bash Shell中,流程控制命令有2大类:“条件”.“循环”.属于“条件”的有:if.case:属于“循环”的有:for.while.until:命令 select 既属于“条件”,也属于“循环 ...
- 搭建一个简单struts2框架的登陆
第一步:下载struts2对应的jar包,可以到struts官网下载:http://struts.apache.org/download.cgi#struts252 出于学习的目的,可以把整个完整的压 ...
- main(int argc, char **argv)参数解读
main(int argc, char **argv)参数解读 编译生成了test.exe ,然后在控制台下相应的目录下输入:test 1 2 3 4 argc就是一个输入了多少个参数,包括te ...
- Android 一些基本组件的使用
Dialog 基本用法 ,带自定义view AlertDialog dialog = new AlertDialog.Builder(context).setTitle("写入信息" ...
- 2015-9月份,Android开发,面试题总结,主要记录没有答出来的问题
9月13日,秒针面试(跪) 1.使用HTML5写Android 与本地应用比较 9月21日,百度一面(跪)1.Android的整个启动过程,什么阶段启动了什么进程,或者服务 2.Android系统框架 ...
- 上个项目的一些反思 I
最近一直在反思之前的项目,发现了很多问题.比如数据安全... 虽然项目需求是只展示最新的数据,所以几乎没用什么本地存储.除了通讯录和用户的Token. 用户通讯录另表,今天反思下用户的Token的存储 ...
- EXCEL科学计数法转为文本格式
1.单元格格式-->特殊-->邮政编码 2.分列:选中数据-菜单栏“数据”-“分列”-下一步-下一步-选中文本-确定即可3.公式TEXT:如果数据在A列 =TEXT(A1,,0) 向下复制 ...
- 数据库Sharding的基本思想和切分策略
一.基本思想 Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题.不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时 ...
- WPF 线程 Dispatcher
WPF 应用程序从两个线程开始: 一个用于处理呈现 一个用于管理 UI 呈现线程有效地隐藏在后台运行,而UI线程则接收输入.处理事件.绘制屏幕以及运行应用程序代码. 大多数应用程序都使用一个 UI 线 ...
- Xtrabackup 安装使用
一 简介: Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品.它能对Inno ...