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(6, 6)];
[attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:25] range:NSMakeRange(0, 12)];

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

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

字符串全部替换
NSAttributedString *str = [[NSAttributedString alloc] initWithString:@"123"];
[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 只能 ...
随机推荐
- BootStrap 智能表单系列 九 表单图片上传的支持
本章介绍如何在生成表单后,可以支持上传图片后可以及时预览图片 代码如下(连接地址:https://github.com/xiexingen/Bootstrap-SmartForm/blob/maste ...
- zoj 2376 Ants
#include<stdio.h> #include<stdlib.h> ]; int main(void) { int t,n,m,i,len,max,min,mx,mi; ...
- 委托与Lambda表达式
~,先不急说委托和Lambda表达式,先看两个例子再说: 1. 通过委托,为一个数字加10,如下代码: class Program { private delegate int JiSuan(int ...
- Visual Studio 继续并运行上次的成功生成,未提示直接运行上一个版本解决方案!
Visual Studio ==>工具 ==> 选项==>项目和解决方案 ==>生成并运行_运行时,当出现生成或部署错误时_选择,提示启动
- spring4.1.3+springmvc+mybatis3.2.1整合
注意:这里使用了mybatis3.2.1版本,刚开始用了3.4.1的版本,会报一个很奇怪的错(java.lang.AbstractMethodError: org.mybatis.spring.tra ...
- Java "==和equals区别" 示例
import java.util.Calendar; import java.util.Date; import java.util.Locale; public class test { publi ...
- 精简版LVCL,有空看看
http://tothpaul.free.fr/sources.php?lvcl.lvcl1 http://synopse.info/forum/viewtopic.php?id=665
- 一键搜索之Win10锁屏壁纸
前天无意发现win10的锁屏壁纸挺漂亮的,就想着能不能保存下来?网上一搜果然有资料,当时参考的连接如下 http://jingyan.baidu.com/article/fedf07375ea2513 ...
- Symfony Composer icu requires lib-icu
运行php compser.phar 的时候出现此问题的时候解决办法 问题描述Problem 1 -Installation request for symfony/icu v1.2.1 -> ...
- jQuery.merge 源码阅读
jQuery.merge(first,second) 概述 合并两个数组 返回的结果会修改第一个数组的内容——第一个数组的元素后面跟着第二个数组的元素. 参数 first:第一个待处理数组,会改变其中 ...