下面對(duì)NSAttributedString各個(gè)屬性進(jìn)行列舉:
1州既、NSFontAttributeName
設(shè)置字號(hào)屬性,默認(rèn)值 12
2套像、NSForegroundColorAttributeNam
設(shè)置字體顏色聪廉,取值為 UIColor對(duì)象聂受,默認(rèn)值為黑色
3饥悴、NSBackgroundColorAttributeName
設(shè)置字體所在區(qū)域背景顏色坦喘,取值為 UIColor對(duì)象盲再,默認(rèn)值為nil, 透明色
4、NSLigatureAttributeName
設(shè)置連體屬性瓣铣,取值為NSNumber 對(duì)象(整數(shù))洲胖,0 表示沒(méi)有連體字符,1 表示使用默認(rèn)的連體字符坯沪。2 表示使用所有連體符號(hào),默認(rèn)值為 1(iOS 不支持 2)
5擒滑、NSKernAttributeName
設(shè)定字符間距腐晾,取值為 NSNumber 對(duì)象(整數(shù)),正值間距加寬丐一,負(fù)值間距變窄
6藻糖、NSStrikethroughStyleAttributeName
設(shè)置刪除線,取值為 NSNumber 對(duì)象(整數(shù))
1.枚舉常量 NSUnderlineStyle中的值
// NSUnderlineStyleNone 不設(shè)置刪除線
// NSUnderlineStyleSingle 設(shè)置刪除線為細(xì)單實(shí)線
// NSUnderlineStyleThick 設(shè)置刪除線為粗單實(shí)線
// NSUnderlineStyleDouble 設(shè)置刪除線為細(xì)雙實(shí)線
2.**注意**:雖然使用了枚舉常量库车,但是枚舉常量的本質(zhì)仍為整數(shù)巨柒,所以同樣必須先轉(zhuǎn)化為 NSNumber 才能使用
3.刪除線和下劃線使用相同的枚舉常量作為其屬性值
4.目前iOS中只有上面列出的4中效果,雖然我們能夠在頭文件中發(fā)現(xiàn)其他更多的取值柠衍,但是使用后沒(méi)有任何效果
5.另外洋满,刪除線屬性取值除了上面的4種外,其實(shí)還可以取其他整數(shù)值珍坊,有興趣的可以自行試驗(yàn)牺勾,取值為 0 - 7時(shí),效果為單實(shí)線阵漏,隨著值得增加驻民,單實(shí)線逐漸變粗,取值為 9 - 15時(shí)履怯,效果為雙實(shí)線回还,取值越大,雙實(shí)線越粗叹洲。
7柠硕、NSStrikethroughColorAttributeName
設(shè)置刪除線顏色,取值為 UIColor 對(duì)象疹味,默認(rèn)值為黑色
8仅叫、NSUnderlineStyleAttributeName
設(shè)置下劃線,取值為 NSNumber 對(duì)象(整數(shù))糙捺,枚舉常量 NSUnderlineStyle中的值诫咱,與刪除線類似
9、NSUnderlineColorAttributeName
設(shè)置下劃線顏色洪灯,取值為 UIColor 對(duì)象坎缭,默認(rèn)值為黑色
NSShadow介紹://NSShadow 對(duì)象比較簡(jiǎn)單竟痰,只有3個(gè)屬性:陰影顏色,模糊半徑和偏移
NSShadow *shadow1 = [[NSShadow alloc] init];
shadow1.shadowOffset = CGSizeMake(3, 3); //陰影偏移(X方向偏移和Y方向偏移)
shadow1.shadowBlurRadius = 0.5; //模糊半徑
shadow1.shadowColor = [UIColor orangeColor]; //陰影顏色
10掏呼、NSStrokeWidthAttributeName
設(shè)置筆畫寬度坏快,取值為 NSNumber 對(duì)象(整數(shù)),負(fù)值填充效果憎夷,正值中空效果
11莽鸿、NSStrokeColorAttributeName
填充部分顏色,不是字體顏色拾给,取值為 UIColor 對(duì)象
12祥得、NSShadowAttributeName
設(shè)置陰影屬性,取值為 NSShadow 對(duì)象
13蒋得、NSTextEffectAttributeName
設(shè)置文本特殊效果级及,取值為 NSString 對(duì)象,目前只有一個(gè)可用的特效
//NSTextEffectLetterpressStyle(凸版印刷效果)额衙,適用于iOS 7.0及以上
14饮焦、NSBaselineOffsetAttributeName
設(shè)置基線偏移值,取值為 NSNumber (float),正值上偏窍侧,負(fù)值下偏
15县踢、NSObliquenessAttributeName
設(shè)置字形傾斜度,取值為 NSNumber (float),正值右傾疏之,負(fù)值左傾
16殿雪、NSExpansionAttributeName
設(shè)置文本橫向拉伸屬性,取值為 NSNumber (float),正值橫向拉伸文本锋爪,負(fù)值橫向壓縮文本
17丙曙、NSWritingDirectionAttributeName
設(shè)置文字書寫方向,從左向右書寫或者從右向左書寫
設(shè)置文字書寫方向其骄,取值為以下組合
//@[@(NSWritingDirectionLeftToRight | NSTextWritingDirectionEmbedding)]
//@[@(NSWritingDirectionLeftToRight | NSTextWritingDirectionOverride)]
//@[@(NSWritingDirectionRightToLeft | NSTextWritingDirectionEmbedding)]
//@[@(NSWritingDirectionRightToLeft | NSTextWritingDirectionOverride)]
一直沒(méi)搞明白 NSTextWritingDirectionEmbedding 和 NSTextWritingDirectionOverride 有什么不同的效果亏镰。
18、NSVerticalGlyphFormAttributeName
設(shè)置文字排版方向拯爽,取值為 NSNumber 對(duì)象(整數(shù))索抓,0 表示橫排文本,1 表示豎排文本毯炮。在 iOS 中逼肯,總是使用橫排文本,0 以外的值都未定義
19桃煎、NSLinkAttributeName
設(shè)置鏈接屬性篮幢,點(diǎn)擊后調(diào)用瀏覽器打開指定URL地址
NSDictionary *attrDict1 = @{ NSLinkAttributeName: [NSURL URLWithString: @"http://www.baidu.com"],
NSFontAttributeName: [UIFont systemFontOfSize:20]
};
_textview.editable = NO; //必須禁止輸入,否則點(diǎn)擊將彈出輸入鍵盤
_textview.scrollEnabled = NO; //可選
_textview.delegate = self; //必須設(shè)置为迈,否則代理函數(shù)不會(huì)被回調(diào)
_textview.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];
代理函數(shù):
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange{
return YES;
}
20三椿、NSAttachmentAttributeName
設(shè)置文本附件,取值為NSTextAttachment對(duì)象,常用于文字圖片混排
NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init];
textAttachment.image = [UIImage imageNamed: @"10000.jpeg"]; //設(shè)置圖片源
textAttachment.bounds = CGRectMake(0, 0, 30, 30); //設(shè)置圖片位置和大小(***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占用一個(gè)字符長(zhǎng)度,插入后原字符串長(zhǎng)度增加1
_label.attributedText = attrStr;
21搜锰、NSParagraphStyleAttributeName 設(shè)置文本段落排版格式伴郁,取值為 NSParagraphStyle 對(duì)象
// alignment 對(duì)齊方式,取值枚舉常量 NSTextAlignment
// firstLineHeadIndent 首行縮進(jìn)蛋叼,取值 float
// headIndent 縮進(jìn)焊傅,取值 float
// tailIndent 尾部縮進(jìn),取值 float
// ineHeightMultiple 可變行高,乘因數(shù)狈涮,取值 float
// maximumLineHeight 最大行高租冠,取值 float
// minimumLineHeight 最小行高,取值 float
// lineSpacing 行距薯嗤,取值 float
// paragraphSpacing 段距,取值 float
// paragraphSpacingBefore 段首空間纤泵,取值 float
//
// baseWritingDirection 句子方向骆姐,取值枚舉常量 NSWritingDirection
// lineBreakMode 斷行方式,取值枚舉常量 NSLineBreakMode
// hyphenationFactor 連字符屬性捏题,取值 0 - 1
NSParagraphStyleAttributeName
1玻褪、alignment
對(duì)齊方式,取值枚舉常量 NSTextAlignment
enum {
NSTextAlignmentLeft = 0,
NSTextAlignmentCenter = 1,
NSTextAlignmentRight = 2,
NSTextAlignmentJustified = 3,
NSTextAlignmentNatural = 4,
};
2公荧、firstLineHeadIndent
首行縮進(jìn)带射,取值 float
3、headIndent
縮進(jìn)循狰,取值 float
4窟社、tailIndent
尾部縮進(jìn),取值 float绪钥,注意距離是從行首算起
5灿里、ineHeightMultiple
可變行高,乘因數(shù),取值 float程腹,大于1行高變大匣吊,小于1行高變小,實(shí)際上字體大小不會(huì)改變寸潦,改變的是行間距
6色鸳、maximumLineHeight
最大行高,取值 float见转,若其值小于默認(rèn)行高命雀,則行間距變小,若其值大于默認(rèn)行高池户,則不會(huì)引起任何變化
7咏雌、minimumLineHeight
最小行高凡怎,取值 float,若其值大于默認(rèn)行高赊抖,則行間距變大统倒,若其值小于默認(rèn)行高,則不會(huì)引起任何變化
8氛雪、lineSpacing
行距房匆,取值 float,可正可負(fù)报亩,正值增加行距浴鸿,負(fù)值減小行距
9、paragraphSpacing
段距弦追,取值 float岳链,負(fù)值無(wú)效,取0值
10劲件、paragraphSpacingBefore
段首空間掸哑,取值 float,最小取值為0
11零远、baseWritingDirection
句子方向苗分,取值枚舉常量NSWritingDirection
enum {
NSWritingDirectionNatural = -1,
NSWritingDirectionLeftToRight = 0,
NSWritingDirectionRightToLeft = 1
};
typedef NSInteger NSWritingDirection;
12、lineBreakMode
斷行方式牵辣,取值枚舉常量 NSLineBreakMode
enum {
NSLineBreakByWordWrapping = 0, //自動(dòng)換行摔癣,單詞切斷
NSLineBreakByCharWrapping, //自動(dòng)換行,字母切斷
NSLineBreakByClipping, //非自動(dòng)換行纬向,不切斷
NSLineBreakByTruncatingHead, //非自動(dòng)換行择浊,行首切斷
NSLineBreakByTruncatingTail, //非自動(dòng)換行,行尾切斷
NSLineBreakByTruncatingMiddle //非自動(dòng)換行逾条,中間切斷
};
typedef NSUInteger NSLineBreakMode;
13近她、hyphenationFactor
連字符屬性,取值 0 到 1 之間膳帕,開啟斷詞功能