NSMutableAttributedString

iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求。之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都比较麻烦,而且很多UILabel的属性也不起作用了,效果都不理想。后来了解到NSMuttableAttstring(带属性的字符串),上面的一些需求都可以很简便的实现。

1.实例化方法和使用方法

实例化方法:

使用字符串初始化

- (id)initWithString:(NSString *)str;

例:

NSMutableAttributedString *AttributedStr = [[NSMutableAttributedStringalloc]initWithString:@"今天天气不错呀"];

- (id)initWithString:(NSString *)str attributes:(NSDictionary *)attrs;

字典中存放一些属性名和属性值,如:

NSDictionary *attributeDict = [NSDictionarydictionaryWithObjectsAndKeys:

                                    [UIFontsystemFontOfSize:15.0],NSFontAttributeName,

                                    [UIColorredColor],NSForegroundColorAttributeName,

                                   NSUnderlineStyleAttributeName,NSUnderlineStyleSingle,nil];

NSMutableAttributedString *AttributedStr = [[NSMutableAttributedStringalloc]initWithString:@"今天天气不错呀" attributes:attributeDict];

- (id)initWithAttributedString:(NSAttributedString *)attester;

使用NSAttributedString初始化,跟NSMutableString,NSString类似

使用方法:

为某一范围内文字设置多个属性

- (void)setAttributes:(NSDictionary *)attrs range:(NSRange)range;

为某一范围内文字添加某个属性

- (void)addAttribute:(NSString *)name value:(id)value
range:(NSRange)range;

为某一范围内文字添加多个属性

- (void)addAttributes:(NSDictionary *)attrs range:(NSRange)range;

移除某范围内的某个属性

- (void)removeAttribute:(NSString *)name range:(NSRange)range;

2.     常见的属性及说明

NSFontAttributeName 字体

NSParagraphStyleAttributeName 段落格式 

NSForegroundColorAttributeName 字体颜色

NSBackgroundColorAttributeName  背景颜色

NSStrikethroughStyleAttributeName删除线格式

NSUnderlineStyleAttributeName     下划线格式

NSStrokeColorAttributeName       删除线颜色

NSStrokeWidthAttributeName删除线宽度

NSShadowAttributeName 阴影

更多方法和属性说明详见苹果官方说明文档:

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSMutableAttributedString_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40003689

另外,其他可以设置text 的控件(如UIButton,UITextField)也都有该属性,该文章不够详细,只是简单介绍,其他效果的实现参考API中更多的属性及使用方法。

时间: 2025-01-21 16:49:21

NSMutableAttributedString的相关文章

UILabel的使用

一.初始化 ? 1 2 3 UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 120, 44)];       [self.view addSubview:myLabel]; 二.设置文字   ①.设置默认文本  ? 1 2 NSString *text = @"标签文本"; myLabel.text = text; 效果: ②.设置标签文本(此属性是iOS6.0之后才出现,如若不是必要,不建议使用

IOS中使用NSAttributedString灵活创建标签

灵活使用NSAttributedString可以更轻松的创建出内容复杂的标签.需要注意一点:如果一个label设置了这个属性,那它其他的设置都将失效. 首先,我们初始化一个NSMutableAttributedString对象. ? 1 2 3 4 5 6 7 8 //通过字符串初始化 //- (instancetype)initWithString:(NSString *)str; //通过字符串和属性字典直接初始化 //- (instancetype)initWithString:(NSSt

带动画渐进效果与颜色渐变的圆弧进度控件设计

带动画渐进效果与颜色渐变的圆弧进度控件设计      今天帮朋友写了一个小巧的圆弧进度控件,控件十分简单,主要设计思路采用CAShapeLayer来创建控件圆弧形状,使用CAGradientLayer来进行颜色渐变的渲染,两者结合来创建出颜色渐变的圆弧进度条控件,关于进度动画采用CoreAnimation动画处理.控件进行了简洁的封装,提供了面向使用的接口,需要的朋友可以自取,Demo地址如下: http://pan.baidu.com/s/1gfqDbtp.       控件中主要提供了,改变

IOS中一段文字设置多种字体颜色代码

  这篇文章主要介绍了IOS中一段文字设置多种字体颜色代码,十分的实用,有需要的小伙伴可以参考下. 给定range和需要设置的颜色,就可以给一段文字设置多种不同的字体颜色,使用方法如下: 代码如下: [self fuwenbenLabel:contentLabel FontNumber:[UIFont systemFontOfSize:15] AndRange:NSMakeRange(6, 1) AndColor:RGBACOLOR(34, 150, 253, 1)]; 代码如下: //设置不同

iOS开发之详解正则表达式

  正则表达式(广为所知的"regex")是一个字符串或一个字符序列来说明一种模式,把它作为一个搜索字符串-非常强大! 在一个文本编辑器或文字处理器中普通的旧式搜索只允许你进行简单的匹配.正则表达式可以实现这样简单的搜索,它还能让你更进一步地按模式搜索,例如,在两个数字后跟一个字母,或者,三个字母后跟一个连字符. 这种模式匹配能让你做更有用的事,如验证字段(电话号码,邮箱地址),检查用户输入,执行更高级的文本操作等等. 如果你渴望了解更多关于正则表达式在iOS中的用法,看一些本教程之外

[转] iOS文字排版(CoreText)那些事儿

iOS文字排版(CoreText)那些事儿 转自阿毛的蛋疼地   第一次比较深入接触iOS文字排版相关内容是在12年底,实现某IM项目聊天内容的图文混排,照着nimbus的AttributedLabel和Raywenderlish上的这篇文章<Core Text Tutorial for iOS: Making a Magazine App>改出了一个比较适用于聊天内容展现的图文混排(文字和表情)控件.   选择自己写而不是直接使用现有第三方库的原因有三: 1. 在这之前也做过一个iOS上的I

iOS文本布局探讨之一——文本布局框架TextKit浅析

iOS文本布局探讨之一--文本布局框架TextKit浅析 一.引言         在iOS开发中,处理文本的视图控件主要有4中,UILabel,UITextField,UITextView和UIWebView.其中UILabel与UITextField相对简单,UITextView是功能完备的文本布局展示类,通过它可以进行复杂的富文本布局,UIWebView主要用来加载网页或者pdf文件,其可以进行HTML,CSS和JS等文件的解析.         TextKit是一个偏上层的开发框架,在i

iOS之UI--富文本总结

文章内容大纲 1.NSMutableAttributedString的基本使用 2.NSMutableAttributedString的简易封装 3.使用开源代码GOBMarkupPaser处理富文本 4.UITextKit简介 5.编程思想的相关思考 前言 富文本使用案例: 这里我自己也用了富文本实现了简单的却也是常用的例子:                              对于最后面的¥50中划线这种设置,估计只有富文本最好用了.   在IOS或者Mac OS X通过UIKit提供

如何实现自己没实现过的需求之文本动画

前言 记得以前看到过一个很赞的文字效果的动画,类似于这样: 当时被惊艳到了,最近偶然间又再次见到,依然还是那么喜欢.假设我们现在需要实现这样的需求.一般碰到需求我们都会去 GitHub 上看看,俗称找轮子(GitHub 基本上只有你想不到的,就没有它没有的).大多数情况下,没有问题.或者说有点小问题:轮子太多,无从下嘴. 选择 选轮子就像选姑娘,你不知道后面等着你的是什么 -–罪恶坑小程如是说 程序员江湖,每位大侠的武功和套路不尽一样,少林,武当,昆仑各门各派,百花争艳.实现轮子的思路自然也不一