下面对NSAttributedString各个属性进行列举:
1、NSFontAttributeName
设置字号属性,默认值 12
2、NSForegroundColorAttributeNam
设置字体颜色,取值为 UIColor对象,默认值为黑色
3、NSBackgroundColorAttributeName
设置字体所在区域背景颜色,取值为 UIColor对象,默认值为nil, 透明色
4、NSLigatureAttributeName
设置连体属性,取值为NSNumber 对象(整数),0 表示没有连体字符,1 表示使用默认的连体字符。2 表示使用所有连体符号,默认值为 1(iOS 不支持 2)
5、NSKernAttributeName
设定字符间距,取值为 NSNumber 对象(整数),正值间距加宽,负值间距变窄
6、NSStrikethroughStyleAttributeName
设置删除线,取值为 NSNumber 对象(整数)
1.枚举常量 NSUnderlineStyle中的值
// NSUnderlineStyleNone 不设置删除线
// NSUnderlineStyleSingle 设置删除线为细单实线
// NSUnderlineStyleThick 设置删除线为粗单实线
// NSUnderlineStyleDouble 设置删除线为细双实线
2.**注意**:虽然使用了枚举常量,但是枚举常量的本质仍为整数,所以同样必须先转化为 NSNumber 才能使用
3.删除线和下划线使用相同的枚举常量作为其属性值
4.目前iOS中只有上面列出的4中效果,虽然我们能够在头文件中发现其他更多的取值,但是使用后没有任何效果
5.另外,删除线属性取值除了上面的4种外,其实还可以取其他整数值,有兴趣的可以自行试验,取值为 0 - 7时,效果为单实线,随着值得增加,单实线逐渐变粗,取值为 9 - 15时,效果为双实线,取值越大,双实线越粗。
7、NSStrikethroughColorAttributeName
设置删除线颜色,取值为 UIColor 对象,默认值为黑色
8、NSUnderlineStyleAttributeName
设置下划线,取值为 NSNumber 对象(整数),枚举常量 NSUnderlineStyle中的值,与删除线类似
9、NSUnderlineColorAttributeName
设置下划线颜色,取值为 UIColor 对象,默认值为黑色
NSShadow介绍://NSShadow 对象比较简单,只有3个属性:阴影颜色,模糊半径和偏移
NSShadow *shadow1 = [[NSShadow alloc] init];
shadow1.shadowOffset = CGSizeMake(3, 3); //阴影偏移(X方向偏移和Y方向偏移)
shadow1.shadowBlurRadius = 0.5; //模糊半径
shadow1.shadowColor = [UIColor orangeColor]; //阴影颜色
10、NSStrokeWidthAttributeName
设置笔画宽度,取值为 NSNumber 对象(整数),负值填充效果,正值中空效果
11、NSStrokeColorAttributeName
填充部分颜色,不是字体颜色,取值为 UIColor 对象
12、NSShadowAttributeName
设置阴影属性,取值为 NSShadow 对象
13、NSTextEffectAttributeName
设置文本特殊效果,取值为 NSString 对象,目前只有一个可用的特效
//NSTextEffectLetterpressStyle(凸版印刷效果),适用于iOS 7.0及以上
14、NSBaselineOffsetAttributeName
设置基线偏移值,取值为 NSNumber (float),正值上偏,负值下偏
15、NSObliquenessAttributeName
设置字形倾斜度,取值为 NSNumber (float),正值右倾,负值左倾
16、NSExpansionAttributeName
设置文本横向拉伸属性,取值为 NSNumber (float),正值横向拉伸文本,负值横向压缩文本
17、NSWritingDirectionAttributeName
设置文字书写方向,从左向右书写或者从右向左书写
设置文字书写方向,取值为以下组合
//@[@(NSWritingDirectionLeftToRight | NSTextWritingDirectionEmbedding)]
//@[@(NSWritingDirectionLeftToRight | NSTextWritingDirectionOverride)]
//@[@(NSWritingDirectionRightToLeft | NSTextWritingDirectionEmbedding)]
//@[@(NSWritingDirectionRightToLeft | NSTextWritingDirectionOverride)]
一直没搞明白 NSTextWritingDirectionEmbedding 和 NSTextWritingDirectionOverride 有什么不同的效果。
18、NSVerticalGlyphFormAttributeName
设置文字排版方向,取值为 NSNumber 对象(整数),0 表示横排文本,1 表示竖排文本。在 iOS 中,总是使用横排文本,0 以外的值都未定义
19、NSLinkAttributeName
设置链接属性,点击后调用浏览器打开指定URL地址
NSDictionary *attrDict1 = @{ NSLinkAttributeName: [NSURL URLWithString: @"http://www.baidu.com"],
NSFontAttributeName: [UIFont systemFontOfSize:20]
};
_textview.editable = NO; //必须禁止输入,否则点击将弹出输入键盘
_textview.scrollEnabled = NO; //可选
_textview.delegate = self; //必须设置,否则代理函数不会被回调
_textview.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];
代理函数:
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange{
return YES;
}
20、NSAttachmentAttributeName
设置文本附件,取值为NSTextAttachment对象,常用于文字图片混排
NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init];
textAttachment.image = [UIImage imageNamed: @"10000.jpeg"]; //设置图片源
textAttachment.bounds = CGRectMake(0, 0, 30, 30); //设置图片位置和大小(***x,y都不起效***)
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString: originStr];
[attrStr addAttribute: NSFontAttributeName value: [UIFont systemFontOfSize: 25] range: NSMakeRange(0, originStr.length)];
NSAttributedString *attrStr = [NSAttributedString attributedStringWithAttachment: textAttachment];
[attrStr insertAttributedString: attrStr atIndex: 2]; //NSTextAttachment占用一个字符长度,插入后原字符串长度增加1
_label.attributedText = attrStr;
21、NSParagraphStyleAttributeName 设置文本段落排版格式,取值为 NSParagraphStyle 对象
// alignment 对齐方式,取值枚举常量 NSTextAlignment
// firstLineHeadIndent 首行缩进,取值 float
// headIndent 缩进,取值 float
// tailIndent 尾部缩进,取值 float
// ineHeightMultiple 可变行高,乘因数,取值 float
// maximumLineHeight 最大行高,取值 float
// minimumLineHeight 最小行高,取值 float
// lineSpacing 行距,取值 float
// paragraphSpacing 段距,取值 float
// paragraphSpacingBefore 段首空间,取值 float
//
// baseWritingDirection 句子方向,取值枚举常量 NSWritingDirection
// lineBreakMode 断行方式,取值枚举常量 NSLineBreakMode
// hyphenationFactor 连字符属性,取值 0 - 1
NSParagraphStyleAttributeName
1、alignment
对齐方式,取值枚举常量 NSTextAlignment
enum {
NSTextAlignmentLeft = 0,
NSTextAlignmentCenter = 1,
NSTextAlignmentRight = 2,
NSTextAlignmentJustified = 3,
NSTextAlignmentNatural = 4,
};
2、firstLineHeadIndent
首行缩进,取值 float
3、headIndent
缩进,取值 float
4、tailIndent
尾部缩进,取值 float,注意距离是从行首算起
5、ineHeightMultiple
可变行高,乘因数,取值 float,大于1行高变大,小于1行高变小,实际上字体大小不会改变,改变的是行间距
6、maximumLineHeight
最大行高,取值 float,若其值小于默认行高,则行间距变小,若其值大于默认行高,则不会引起任何变化
7、minimumLineHeight
最小行高,取值 float,若其值大于默认行高,则行间距变大,若其值小于默认行高,则不会引起任何变化
8、lineSpacing
行距,取值 float,可正可负,正值增加行距,负值减小行距
9、paragraphSpacing
段距,取值 float,负值无效,取0值
10、paragraphSpacingBefore
段首空间,取值 float,最小取值为0
11、baseWritingDirection
句子方向,取值枚举常量NSWritingDirection
enum {
NSWritingDirectionNatural = -1,
NSWritingDirectionLeftToRight = 0,
NSWritingDirectionRightToLeft = 1
};
typedef NSInteger NSWritingDirection;
12、lineBreakMode
断行方式,取值枚举常量 NSLineBreakMode
enum {
NSLineBreakByWordWrapping = 0, //自动换行,单词切断
NSLineBreakByCharWrapping, //自动换行,字母切断
NSLineBreakByClipping, //非自动换行,不切断
NSLineBreakByTruncatingHead, //非自动换行,行首切断
NSLineBreakByTruncatingTail, //非自动换行,行尾切断
NSLineBreakByTruncatingMiddle //非自动换行,中间切断
};
typedef NSUInteger NSLineBreakMode;
13、hyphenationFactor
连字符属性,取值 0 到 1 之间,开启断词功能