NSAttributedString的用法

以前看到这种字号和颜色不一样的字符串,想出个讨巧的办法就是“¥150”一个UILable,“元/位”一个UILable。今天翻看以前的工程,command点进UITextField中看到[attributedText]这个关键字,以前都没注意过UITextField还有这个属性,其实UITextView、UILable也有这个属性,iOS6就已经有了,说来惭愧,对此罚站1秒钟。

NSAttributedString叫做富文本,是一种带有属性的字符串,通过它可以轻松的在一个字符串中表现出多种字体、字号、字体大小等各不相同的风格,还可以对段落进行格式化。

通过以下代码即可实现上面图示效果,十分方便,从此再也不用设置两个UILable,并且处心积虑的处理它们的长度了。

 1     UILabel * aLable = [[UILabel alloc] initWithFrame:CGRectMake(100, 500, 200, 40)];
 2     aLable.textAlignment = NSTextAlignmentCenter;
 3     [self.view addSubview:aLable];
 4
 5     NSString * aString = @"¥150 元/位";
 6
 7     //富文本对象
 8     NSMutableAttributedString * aAttributedString = [[NSMutableAttributedString alloc] initWithString:aString];
 9
10     //富文本样式
11     [aAttributedString addAttribute:NSForegroundColorAttributeName  //文字颜色
12                               value:[UIColor redColor]
13                               range:NSMakeRange(0, 4)];
14
15     [aAttributedString addAttribute:NSFontAttributeName             //文字字体
16                               value:[UIFont systemFontOfSize:25]
17                               range:NSMakeRange(0, 4)];
18
19     aLable.attributedText = aAttributedString;

常用属性:

NSFontAttributeName           文字字体

NSParagraphStyleAttributeName     段落样式(字符串通过“\n”进行分段,此设置必须在lable.numberOfLines = 0时有效,value通过NSMutableParagraphStyle设置,它有以下属性)

 [段落样式-插曲] 1 @property(readwrite) CGFloat lineSpacing;              //行间距
 2 @property(readwrite) CGFloat paragraphSpacing;           //段间距
 3 @property(readwrite) NSTextAlignment alignment;           //对齐方式
 4 @property(readwrite) CGFloat firstLineHeadIndent;          //首行缩紧
 5 @property(readwrite) CGFloat headIndent;               //除首行之外其他行缩进
 6 @property(readwrite) CGFloat tailIndent;               //每行容纳字符的宽度
 7 @property(readwrite) NSLineBreakMode lineBreakMode;         //换行方式
 8 @property(readwrite) CGFloat minimumLineHeight;           //最小行高
 9 @property(readwrite) CGFloat maximumLineHeight;           //最大行高
10 @property(readwrite) NSWritingDirection baseWritingDirection;  //书写方式(NSWritingDirectionNatural,NSWritingDirectionLeftToRight,NSWritingDirectionRightToLeft)11 @property(readwrite) CGFloat lineHeightMultiple;12 @property(readwrite) CGFloat paragraphSpacingBefore;13 @property(readwrite) float hyphenationFactor;14 @property(readwrite,copy,NS_NONATOMIC_IOSONLY) NSArray *tabStops NS_AVAILABLE_IOS(7_0);15 @property(readwrite,NS_NONATOMIC_IOSONLY) CGFloat defaultTabInterval NS_AVAILABLE_IOS(7_0);
 [段落样式demo] 1     UILabel * lable = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, self.view.frame.size.width-100, 200)];
 2     lable.backgroundColor = [UIColor lightGrayColor];
 3     lable.numberOfLines = 0;
 4     [self.view addSubview:lable];
 5
 6     NSString * string = @"Always believe that something wonderful is about \nto happen!";
 7
 8     //富文本
 9     NSMutableAttributedString * attributedString = [[NSMutableAttributedString alloc] initWithString:string];
10
11     //段落样式
12     NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];
13
14 #warning  lable.numberOfLines必须为0,段落样式才生效
15     //行间距
16     paragraphStyle.lineSpacing = 10.0;
17     //段落间距
18     paragraphStyle.paragraphSpacing = 20.0;
19
20 //    paragraphStyle.baseWritingDirection = NSWritingDirectionLeftToRight;
21 //    paragraphStyle.firstLineHeadIndent = 10.0;
22 //    paragraphStyle.headIndent = 50.0;
23 //    paragraphStyle.tailIndent = 200.0;
24
25     [attributedString addAttribute:NSParagraphStyleAttributeName
26                              value:paragraphStyle
27                              range:NSMakeRange(0, string.length)];
28
29     lable.attributedText = attributedString;


NSForegroundColorAttributeName    文字前景色

NSBackgroundColorAttributeName     文字背景色

NSLigatureAttributeName        连体字(NSNumber  @0:无连体,@1:默认连体,系统字体不包含对连体的支持)

NSUnderlineStyleAttributeName     下划线

NSStrokeColorAttributeName       只有在NSStrokeWidthAttributeName设置了值之后才有效(默认字体颜色和前景色一致,如果设置的颜色和前景色不一致则前景色无效)

NSStrokeWidthAttributeName      设置该属性之后字体变成空心字体,字体边线宽度为value设定的值

NSBaselineOffsetAttributeName     值为NSNumber类型,表明文字相对于其他文字基准线向上的偏移量

NSUnderlineColorAttributeName      值为UIColor类型,下划线颜色(只有在NSUnderlineStyleAttributeName的value为@1时有效)

NSUnderlineStyleAttributeName      值为NSNumber类型,下划线宽度(默认值为@0:下划线宽度为0——不现实下划线,@1:字符串有下划线)

时间: 2024-12-31 03:42:45

NSAttributedString的用法的相关文章

NSAttributedString用法

以前看到这种字号和颜色不一样的字符串,想出个讨巧的办法就是“¥150”一个UILable,“元/位”一个UILable.今天翻看以前的工程,command点进UITextField中看到[attributedText]这个关键字,以前都没注意过UITextField还有这个属性,其实UITextView.UILable也有这个属性,iOS6就已经有了,说来惭愧,对此罚站1秒钟. NSAttributedString叫做富文本,是一种带有属性的字符串,通过它可以轻松的在一个字符串中表现出多种字体.

富文本常用封装(NSAttributedString浅析)

最近经常遇到关于富文本的一些需求,特此封装了几个最常用的API分享给大家,但授之以鱼不如授之以渔,接下来会顺便谈谈NSAttributedString,确保你读了本篇文章能够自己封装关于富文本的API,本文封装API的示例Demo再此,拿去用吧!骚年们! 一.常用需求封装 需求:在我们日常开发中,某些句子中会有改变某些字颜色的需求,当然颜色一般而言就是为了着重强调,常为同一种颜色,所以下面代码是单纯改变一句话中的某些字的颜色 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

NSMutableAttributedString的简单用法

一直对这个类的用法有点糊涂,今天抽了一个时间研究了一下 1.首先来看系统的api(方法) 1 @interface NSMutableAttributedString : NSAttributedString 2 3 - (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)str; 4 - (void)setAttributes:(nullable NSDictionary<NSString *, id> *

富文本常用封装(NSAttributedString)

最近经常遇到关于富文本的一些需求,特此封装了几个最常用的API分享给大家,但授之以鱼不如授之以渔,接下来会顺便谈谈NSAttributedString,确保你读了本篇文章能够自己封装关于富文本的API,本文封装API的示例Demo再此,拿去用吧!骚年们! 一.常用需求封装 需求:在我们日常开发中,某些句子中会有改变某些字颜色的需求,当然颜色一般而言就是为了着重强调,常为同一种颜色,所以下面代码是单纯改变一句话中的某些字的颜色 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

js中获取时间new date()的用法

js中获取时间new date()的用法 获取时间:   var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.getFullYear(); //获取完整的年份(4位,1970-????) 3 myDate.getMonth(); //获取当前月份(0-11,0代表1月) 4 myDate.getDate(); //获取当前日(1-31) 5 myDate.getDay();

20.5 Shell脚本中的逻辑判断;20.6 文件目录属性判断;20.7 if特殊用法;20.8 20.9 cace判断(上下)

扩展: select用法 http://www.apelearn.com/bbs/thread-7950-1-1.html 20.5 Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 1. 创建if1.sh测试脚本: [[email protected] ~]# vi if1.sh a=5,如果a大于3,满足这个条件,显示ok 添加内容: #!/bin/bash a=5 if [ $a -gt 3 ] then echo ok fi 2. 执行if1.sh脚本: [[e

20.1 Shell脚本介绍;20.2 Shell脚本结构和执行;20.3 date命令用法;20.4 Shell脚本中的变量

20.1 Shell脚本介绍 1. shell是一种脚本语言 aming_linux blog.lishiming.net 2. 可以使用逻辑判断.循环等语法 3. 可以自定义函数 4. shell是系统命令的集合 5. shell脚本可以实现自动化运维,能大大增加我们的运维效率 20.2 Shell脚本结构和执行 1. 开头(首行)需要加: #!/bin/bash 2. 以#开头的行作为解释说明: 3. 脚本的名字以.sh结尾,用于区分这是一个shell脚本 4. 执行.sh脚本方法有两种:

shell 中seq的用法 echo -n用法

用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数 从1循环到100的两种方法(bash 其它的shell没试过)for x in `seq 1 100`;do echo $x;donefor x in {1..100};do echo $x;done echo -n 不换行输出 $echo -n "123" $echo "456" 最终输出 123456 echo -e 处理特殊字符 若字符串中

sudo的用法

su -l user -C 'COMMAND' 是用user这个用户执行命令 我们一般使用sudo 这个命令 sudo [-u] user COMMAND sudo [-k] COMMAND 清除此前用户的密码. sudo的配置文件/etc/sudoers 配置项为 users    hosts=(runas)    commands users:可以是一个用户的名称也可以是一个组,也可以是一个别名 username #UID user_alias 用户别名的用法 User_Alias NETA