您的位置:首页 > 移动开发 > IOS开发

iOS 字符属性NSAttributedString描述

2015-07-12 14:07 519 查看
原文见:http://www.itnose.net/detail/6177538.html

字符属性

字符属性可以应用于 attributedstring 的文本中。另外,可以直接设置UILabel、UITextField、UITextView的富文本属性attributedText

NSFontAttributeName
设置字体属性,默认值:字体:Helvetica(Neue) 字号:12

NSForegroundColorAttributeNam
设置字体颜色,取值为 UIColor对象,默认值为黑色

NSBackgroundColorAttributeName
设置字体所在区域背景颜色,取值为 UIColor对象,默认值为nil, 透明色

NSLigatureAttributeName
设置连体属性,取值为NSNumber 对象(整数),0 表示没有连体字符,1 表示使用默认的连体字符。2 表示使用所有连体符号,默认值为 1(iOS 不支持 2)

NSKernAttributeName
设定字符间距,取值为 NSNumber 对象(整数),正值间距加宽,负值间距变窄

NSStrikethroughStyleAttributeName
设置删除线,取值为 NSNumber 对象(整数)

1.枚举常量 NSUnderlineStyle中的值
// NSUnderlineStyleNone   不设置删除线
// NSUnderlineStyleSingle 设置删除线为细单实线
// NSUnderlineStyleThick  设置删除线为粗单实线
// NSUnderlineStyleDouble 设置删除线为细双实线
 2.**注意**:虽然使用了枚举常量,但是枚举常量的本质仍为整数,所以同样必须先转化为 NSNumber 才能使用
 3.删除线和下划线使用相同的枚举常量作为其属性值
 4.目前iOS中只有上面列出的4中效果,虽然我们能够在头文件中发现其他更多的取值,但是使用后没有任何效果
 5.另外,删除线属性取值除了上面的4种外,其实还可以取其他整数值,有兴趣的可以自行试验,取值为 0 - 7时,效果为单实线,随着值得增加,单实线逐渐变粗,取值为 9 - 15时,效果为双实线,取值越大,双实线越粗。


NSStrikethroughColorAttributeName
设置删除线颜色,取值为 UIColor 对象,默认值为黑色

NSUnderlineStyleAttributeName
设置下划线,取值为 NSNumber 对象(整数),枚举常量 NSUnderlineStyle中的值,与删除线类似

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];  //阴影颜色


NSStrokeWidthAttributeName
设置笔画宽度,取值为 NSNumber 对象(整数),负值填充效果,正值中空效果

NSStrokeColorAttributeName
填充部分颜色,不是字体颜色,取值为 UIColor 对象

NSShadowAttributeName
设置阴影属性,取值为 NSShadow 对象

NSTextEffectAttributeName
设置文本特殊效果,取值为 NSString 对象,目前只有一个可用的特效

//NSTextEffectLetterpressStyle(凸版印刷效果),适用于iOS 7.0及以上


NSBaselineOffsetAttributeName
设置基线偏移值,取值为 NSNumber (float),正值上偏,负值下偏

NSObliquenessAttributeName
设置字形倾斜度,取值为 NSNumber (float),正值右倾,负值左倾

NSExpansionAttributeName
设置文本横向拉伸属性,取值为 NSNumber (float),正值横向拉伸文本,负值横向压缩文本

NSWritingDirectionAttributeName
设置文字书写方向,从左向右书写或者从右向左书写

设置文字书写方向,取值为以下组合
 //@[@(NSWritingDirectionLeftToRight | NSTextWritingDirectionEmbedding)]
 //@[@(NSWritingDirectionLeftToRight | NSTextWritingDirectionOverride)]
 //@[@(NSWritingDirectionRightToLeft | NSTextWritingDirectionEmbedding)]
 //@[@(NSWritingDirectionRightToLeft | NSTextWritingDirectionOverride)]
 一直没搞明白  NSTextWritingDirectionEmbedding 和  NSTextWritingDirectionOverride 有什么不同的效果。


NSVerticalGlyphFormAttributeName
设置文字排版方向,取值为 NSNumber 对象(整数),0 表示横排文本,1 表示竖排文本。在 iOS 中,总是使用横排文本,0 以外的值都未定义

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;
}


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;


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*

alignment 对齐方式,取值枚举常量 NSTextAlignment

enum {
    NSTextAlignmentLeft      = 0,
    NSTextAlignmentCenter    = 1,
    NSTextAlignmentRight     = 2,
    NSTextAlignmentJustified = 3,
    NSTextAlignmentNatural   = 4,
};


firstLineHeadIndent 首行缩进,取值 float

headIndent 缩进,取值 float

tailIndent 尾部缩进,取值 float,注意距离是从行首算起

ineHeightMultiple 可变行高,乘因数,取值 float,大于1行高变大,小于1行高变小,实际上字体大小不会改变,改变的是行间距

maximumLineHeight 最大行高,取值 float,若其值小于默认行高,则行间距变小,若其值大于默认行高,则不会引起任何变化

minimumLineHeight 最小行高,取值 float,若其值大于默认行高,则行间距变大,若其值小于默认行高,则不会引起任何变化

lineSpacing 行距,取值 float,可正可负,正值增加行距,负值减小行距

paragraphSpacing 段距,取值 float,负值无效,取0值

paragraphSpacingBefore 段首空间,取值 float,最小取值为0

baseWritingDirection 句子方向,取值枚举常量NSWritingDirection

enum {
        NSWritingDirectionNatural = -1,
        NSWritingDirectionLeftToRight =  0,
        NSWritingDirectionRightToLeft =  1
    };
    typedef NSInteger NSWritingDirection;


lineBreakMode 断行方式,取值枚举常量 NSLineBreakMode

enum {
        NSLineBreakByWordWrapping = 0, //自动换行,单词切断
        NSLineBreakByCharWrapping,     //自动换行,字母切断
        NSLineBreakByClipping,         //非自动换行,不切断
        NSLineBreakByTruncatingHead,   //非自动换行,行首切断
        NSLineBreakByTruncatingTail,   //非自动换行,行尾切断
        NSLineBreakByTruncatingMiddle  //非自动换行,中间切断
    };
    typedef NSUInteger NSLineBreakMode;


hyphenationFactor 连字符属性,取值 0 到 1 之间,开启断词功能
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: