原文见:http://www.itnose.net/detail/6177538.html
字符属性
字符属性可以应用于 attributedstring 的文本中。另外,可以直接设置UILabel、UITextField、UITextView的富文本属性attributedText
NSFontAttributeName
设置字体属性,默认值:字体:Helvetica(Neue) 字号:12NSForegroundColorAttributeNam
设置字体颜色,取值为 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 之间,开启断词功能