iOS使用NSMutableAttributedString实现富文本小结
NSAttributedString
NSAttributedString对象管理适用于字符串中单个字符或字符范围的字符串和关联的属性集(例如字体和字距)。NSAttributedString对象的默认字体是Helvetica 12点,可能与平台的默认系统字体不同。因此,您可能希望创建适用于您的应用程序的非默认属性的新字符串。您还可以使用NSParagraphStyle类及其子类NSMutableParagraphStyle来封装NSAttributedString类使用的段落或标尺属性。
实例化方法和使用方法
实例化方法
使用字符串初始化
- (instancetype)initWithString:(NSString *)str;
代码示例
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"测试数据"];
字典中存放一些属性名和属性值
- (instancetype)initWithString:(NSString *)str attributes:(NSDictionary<NSString *,id> *)attrs;
代码示例
NSDictionary *attributedDict = @{
NSFontAttributeName:[UIFont systemFontOfSize:16.0],
NSForegroundColorAttributeName:[UIColor redColor],
NSUnderlineStyleAttributeName:@(NSUnderlineStyleThick)
};
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"测试数据" attributes:attributedDict];
使用NSAttributedString初始化,与NSMutableString,NSString类似
- (instancetype)initWithAttributedString:(NSAttributedString *)attrStr;
使用方法
为某一范围内的文字设置多个属性的方法
- (void)setAttributes:(NSDictionary<NSString *,id> *)attrs range:(NSRange)range;
//代码示例
NSString *string = @"测试数据";
NSDictionary *attributedDict = @{
NSFontAttributeName:[UIFont systemFontOfSize:16.0],
NSForegroundColorAttributeName:[UIColor redColor],
NSUnderlineStyleAttributeName:@(NSUnderlineStyleThick)
};
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string];
[attributedString setAttributes:attributedDict range:NSMakeRange(0, string.length)];
为某一范围内的文字添加某个属性的方法
- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;
//代码示例
NSString *string = @"测试数据";
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(0, string.length)];
为某一范围内的文字添加多个属性的方法
- (void)addAttributes:(NSDictionary<NSString *,id> *)attrs range:(NSRange)range;
//代码示例
NSString *string = @"测试数据";
NSDictionary *attributedDict = @{
NSFontAttributeName:[UIFont systemFontOfSize:16.0],
NSForegroundColorAttributeName:[UIColor redColor],
NSUnderlineStyleAttributeName:@(NSUnderlineStyleThick)
};
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string];
[attributedString addAttributes:attributedDict range:NSMakeRange(0, string.length)];
移除某个范围内的某个属性的方法
- (void)removeAttribute:(NSString *)name range:(NSRange)range;
//代码示例
NSString *string = @"测试数据";
NSDictionary *attributedDict = @{
NSFontAttributeName:[UIFont systemFontOfSize:16.0],
NSForegroundColorAttributeName:[UIColor redColor],
NSUnderlineStyleAttributeName:@(NSUnderlineStyleThick)
};
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string];
[attributedString addAttributes:attributedDict range:NSMakeRange(0, string.length)];
[attributedString removeAttribute:NSForegroundColorAttributeName range:NSMakeRange(0, string.length)];
属性及说明
| key | 说明 |
|---|---|
| NSFontAttributeName | 字体,value是UIFont对象 |
| NSParagraphStyleAttributeName | 绘图的风格(居中,换行模式,间距等诸多风格),value是NSParagraphStyle对象 |
| NSForegroundColorAttributeName | 文字颜色,value是UIColor对象 |
| NSLigatureAttributeName | 字符连体,value是NSNumber |
| NSKernAttributeName | 字符间隔 |
| NSStrikethroughStyleAttributeName | 删除线,value是NSNumber |
| NSUnderlineStyleAttributeName | 下划线,value是NSNumber |
| NSStrokeColorAttributeName | 描绘边颜色,value是UIColor |
| NSStrokeWidthAttributeName | 描边宽度,value是NSNumber |
| NSShadowAttributeName | 阴影,value是NSShadow对象 |
| NSTextEffectAttributeName | 文字效果,value是NSString |
| NSAttachmentAttributeName | 附属,value是NSTextAttachment 对象 |
| NSLinkAttributeName | 链接,value是NSURL or NSString |
| NSBaselineOffsetAttributeName | 基础偏移量,value是NSNumber对象 |
| NSStrikethroughColorAttributeName | 删除线颜色,value是UIColor |
| NSObliquenessAttributeName | 字体倾斜 |
| NSExpansionAttributeName | 字体扁平化 |
| NSVerticalGlyphFormAttributeName | 垂直或者水平,value是 NSNumber,0表示水平,1垂直 |
富文本段落排版格式属性说明
| 属性 | 说明 |
|---|---|
| lineSpacing | 字体的行间距 |
| firstLineHeadIndent | 首行缩进 |
| alignment | (两端对齐的)文本对齐方式:(左,中,右,两端对齐,自然) |
| lineBreakMode | 结尾部分的内容以……方式省略 ( "...wxyz" ,"abcd..." ,"ab...yz") |
| headIndent | 整体缩进(首行除外) |
| minimumLineHeight | 最低行高 |
| maximumLineHeight | 最大行高 |
| paragraphSpacing | 段与段之间的间距 |
| paragraphSpacingBefore | 段首行空白空间 |
| baseWritingDirection | 书写方向(一共三种) |
| hyphenationFactor | 连字属性 在iOS,唯一支持的值分别为0和1 |
作者:coder小鹏
iOS使用NSMutableAttributedString实现富文本小结的更多相关文章
- 【转】iOS使用NSMutableAttributedString实现富文本
iOS使用NSMutableAttributedString实现富文本 在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求.之前在网上找了一些资料,有的是重绘 ...
- iOS使用NSMutableAttributedString 实现富文本(不同颜色字体、下划线等)
在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求.之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都比较麻烦 ...
- [转] iOS使用NSMutableAttributedString 实现富文本(不同颜色字体、下划线等)
转自: 在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求.之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都 ...
- [iOS] 利用 NSAttributedString 进行富文本处理
/iOS /[iOS] 利用 NSAttributedString 进行富文本处理 2016年4月4日 刘小龙 iOS 许多时候我们需要以各种灵活的形式展现文本信息,即富文本.普通的 text 属性显 ...
- 【改】iOS学习之NSAttributedString(富文本)
NSAttributedString 叫做富文本,是一种带有属性的字符串,通过它可以轻松的在一个字符串中表现出多种字体.字号.字体大小等各不相同的风格,还可以对段落进行格式化,一般都是对可变富文本(N ...
- iOS学习之NSAttributedString(富文本)
NSAttributedString 叫做富文本,是一种带有属性的字符串,通过它可以轻松的在一个字符串中表现出多种字体.字号.字体大小等各不相同的风格,还可以对段落进行格式化,一般都是对可变富文本(N ...
- 关于NSMutableAttributedString进行富文本 UILabel 的制作
//1.初始化与其他无异 NSMutableAttributedString *AttributedStr2 = [[NSMutableAttributedString alloc]initWithS ...
- #iOS问题记录# UITextview富文本链接,禁止长按事件
UITextView的富文本组装,添加图片点击事件,启动 - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *) ...
- iOS开发--使用NSMutableAttributedString 实现富文本
在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求.之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都比较麻烦 ...
随机推荐
- redis mysql验证 redis_mysql_check.py
# coding:utf-8 import pymysql import redis import sys def con_mysql(sql): db = pymysql.connect(host= ...
- PyQt4(简单计算器)
随便写写 import sys import calc from PyQt4 import QtCore, QtGui class MyWidget(QtGui.QWidget): num1 = &q ...
- RHEL7系统管理之资源管理
1. CGroup(控制群组).slice(切片).scop.service 控制群组(control group)是linux kernel的一项功能, 该功能允许linux对RHEL7中syste ...
- Oracle 补丁那些事儿(PS、PSU、CPU、SPU、BP、DBBP…)
当前ORACLE数据库提供两种方式的补丁一种是主动的Proactive Patches和另一种被动的Reactive Patches,其中Reactive Patches是指过去的ONE-OFF Pa ...
- django 板块动态切换
需求:在同一页面的不同板块上可以实现动态切换,使用一个view实现,具体如下图所示,点击phy显示物理机列表,点击vm显示虚机列表,phy.vm对应的url均是动态生成: ...
- idea指定SpringBoot启动.properties文件
比如我的项目下有2个.properties文件,一个是application.properties,一个是application-local.properties,在本地的时候想指定用applicat ...
- October 06th 2017 Week 40th Friday
The greatest ideal man can set before himself is self-perfection. 一个人最高的理想是自我完善. To be better than t ...
- 囧啊!!时间戳转化为时间出错php
最近写了一个api,测试也没发现啥问题.可是上线之后发现有时api的返回结果不正确.为什么呢? 调我接口的同学给了两个调用示例,理论上两个的结果应该一致,实际结果却不一致. api调用带了一个时间戳参 ...
- sql 模糊查询优化
在sql语句中使用 like模糊查询时,应该尽量避免%%,因为模糊查询是比较慢的,当出现这样的情况时,应该考虑优化. 举个例子:我在表中查询2012 年创建的记录 SELECT * FROM `com ...
- Linux 上安装MyEclipse
操作系统ubuntu14.04,亲测安装MyEclipse2014成功,且破解成阿功.在安装myeclipse之前,您当然需要安装jdk了,jdk在这里不做介绍 下载 下载linux版本的MyEcli ...