iOS NSMutableAttributedString常用方法总结

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];

 

 

 

 以上是部分方法的使用,大家有兴趣的可以自己试试其他的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248097.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件开发工具(第1章:绪论)

一、 软件开发工具的由来 计算机语言和软件开发工具的发展和历史 机器语言&#xff08;第一代语言&#xff09;&#xff1a;难以记忆的、无意义的、二进 制的字符串 汇编语言&#xff08;第二代语言&#xff09;针对难以记忆的、无意义的、二进 制的字符串、人们试图用英语中具…

Saiku Table展示数据合并bug修复(二十五)

Saiku Table展示数据合并bug修复 Saiku以table的形式展示数据&#xff0c;如果点击了 非空的字段 按钮&#xff0c;则会自动进行数据合并&#xff0c;为空的数据行以及数据列都会自动隐藏掉。 首先我们应该定位问题&#xff1a; 1.查看接口返回值&#xff0c;会发现接口返回都正…

软件开发工具(第2章:软件开发过程及其组织)

一、软件开发的困难 程序员做好软件工作的关键是什么&#xff1f; 关键是两个转换&#xff1a; 第一个转换是用户对软件功能的理解与程序员对软件功能的理解之间的转换。 &#xff08;不同⾏业的⼈员对于事物的认识⽅法与描述⽅法是不同的。&#xff09; 第二个转换要解决的是人…

数据可视化(BI报表的开发)第四天

练习题&#xff1a; 先找出字符串 ‘8587263747153203552943982’ 中出现次数最多的数字及次数&#xff0c;然后去重后并排序&#xff08;不准使用sort&#xff09;&#xff0c;使得到结果为 ‘0123456789’。 要求1&#xff1a;找到出现最多的数字和出现的次数 // 1、找出出…

网络经济与企业管理(第 1 章:企业管理概论)

一、企业的概念 什么是企业&#xff1f; 1.企业以市场为导向&#xff0c;以价值增值作为经济活动的目的 2.企业是从事商品生产和流通的经济组织 3.企业经营过程中要自主经营、自负盈亏、独立核算和承担风险&#xff0c;具有法人资格的基本经济单位 企业发展的三个时期&#xff…

去死吧!USB转串口!!!

首先&#xff0c;这个题目有两种歧义&#xff1a;1、USB转232串口&#xff08;严格说就是这种&#xff09;&#xff01; 2、USB转USART串口&#xff08;通常都是这么叫&#xff0c;认为就是这&#xff0c;理论上是错误的&#xff0c;歧义所在&#xff09;&#xff01; USB转TTL…

IDEA微服务项目的application.yml没有绿色叶子的解决办法

1.今天在写微服务项目的时候成功入坑&#xff0c;那么问题是啥呢&#xff1f;接下来和我一起走入bug的世界吧&#xff0c;让我们看看究竟是怎么回事。 *问题描述    1.application.yml是灰色的小格子 2.实在难看 *需要解决的最终结果 1.有绿色的小叶子 解决方案上图 1. 2. …

Ajax — 第一天

上网的目的 本质目的&#xff1a;浏览和消费资源 资源&#xff1a;文字、图片、音频、视频…资源存在哪里&#xff1a;服务器上 服务器的概念 是负责存放和对外提供资源的电脑。它的性能比普通的计算机好太多了 客户端 获取和消费资源的电脑&#xff0c;叫做客户端。 我…

Swift傻傻分不清楚系列(四)基本运算符 o_O!???

本页包含内容&#xff1a; 术语赋值运算符算术运算符组合赋值运算符比较运算符三目运算符空合运算符区间运算符逻辑运算符 运算符是检查、改变、合并值的特殊符号或短语。例如&#xff0c;加号&#xff08;&#xff09;将两个数相加&#xff08;如 let i 1 2&#xff09;。更…

网络经济与企业管理(第 2 章:企业战略管理)

一、战略的性质与类型 什么是战略&#xff1a;企业发展的谋划 企业战略的三个层次&#xff1a; 企业总体战略&#xff1a;又称经营战略&#xff0c;是企业整体运营的指导思想事业层战略&#xff1a;又称竞争战略、业务层次战略、SBU战略&#xff0c; 指导具体战略经营单位。职能…

Ajax — 图书管理

注意&#xff1a;本项目基于 jQuery 文件下进行的 Ajax 请求项目&#xff0c;需要映入jQuery文件&#xff01; <body style"padding: 15px;"><!-- 添加图书的Panel面板 --><div class"panel panel-primary"><div class"panel-h…

错误: 找不到或无法加载主类 com.leyou.LeyouItemApplication Process finished with exit code 1...

在IDEA的使用过程中&#xff0c;经常断掉服务或者重启服务&#xff0c;最近断掉服务重启时突然遇到了一个启动报错&#xff1a; 错误&#xff1a;找不到或无法加载主类 猜测&#xff1a;1&#xff0c;未能成功编译&#xff1b; 尝试&#xff1a;菜单---》Build---》Rebuild Pro…

Ajax — 第二天

Ajax-02 今天内容&#xff1a; 安装浏览器插件 聊天机器人案例 Form表单提交 模板引擎&#xff08;新的概念&#xff0c;难点&#xff09; 两个案例 Chrome浏览器插件安装 安装步骤 下载插件的网站&#xff1a; https://www.gugeapps.net/ 无需扫码 http://www.cnplu…

Ajax — 评论列表

<body style"padding: 15px;"><!-- 评论面板 --><div class"panel panel-primary"><div class"panel-heading"><h3 class"panel-title">发表评论</h3></div><form class"panel-bod…

Swift傻傻分不清楚系列(七)控制流

本页包含内容&#xff1a; For-In 循环While 循环条件语句控制转移语句&#xff08;Control Transfer Statements&#xff09;提前退出检测 API 可用性 Swift提供了多种流程控制结构&#xff0c;包括可以多次执行任务的while循环&#xff0c;基于特定条件选择执行不同代码分支…

java课程之团队开发冲刺1.8

一.总结昨天进度 1.初步实现用户交互 增删课程表 二.遇到的困难 1.主界面一段程序一直报错 三.今天的任务 1.解决报错问题&#xff0c; 编写查询空教室功能 照片 燃尽图 转载于:https://www.cnblogs.com/qfsr/p/10873636.html

Ajax — 聊天机器人演示

<body><div class"wrap"><!-- 头部 Header 区域 --><div class"header"><h3>小思同学</h3><img src"img/person01.png" alt"icon" /></div><!-- 中间 聊天内容区域 --><div…

Ajax — 第三天

Ajax-03 模板引擎原理 正则回顾 区分正则方法和字符串方法 正则方法 test()exec() 字符串方法 match()replace()split()search() 正则方法由正则表达式调用&#xff1b;字符串方法由字符串调用&#xff1b; exec方法 功能&#xff1a;使用正则表达式匹配字符串&#xff0c…

d3.js 共享交换平台demo

今天在群里遇到一张图 遂来玩一玩&#xff0c;先来上图!! 点击相应按钮&#xff0c;开关线路&#xff0c;此项目的重点是计算相应图形的位置&#xff0c;由于是个性化项目就没有封装布局。好了直接上代码。 <!DOCTYPE html> <html lang"en"> <head&g…

Java知识系统回顾整理01基础05控制流程07结束外部循环

一、break是结束当前循环 二、结束当前循环实例 break; 只能结束当前循环 public class HelloWorld { public static void main(String[] args) { //打印单数 for (int i 0; i < 10; i) { for (int j 0; j < 1…