iOS NSAttributedString字符属性

下面对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 之间,开启断词功能

你可能感兴趣的:(iOS NSAttributedString字符属性)