iOS_NSAttributedString 的21種屬性詳細(xì)介紹(圖文混排)
* API: Character Attributes ,NSAttributedString共有21個屬性*
*1.NSFontAttributeName->設(shè)置字體屬性,默認(rèn)值:字體:Helvetica(Neue) 字號:12
*2.NSParagraphStyleAttributeName->設(shè)置文本段落排版格式甜攀,取值為NSParagraphStyle對象(詳情見下面的API說明)?
*3.NSForegroundColorAttributeName->設(shè)置字體顏色,取值為UIColor對象,默認(rèn)值為黑色?
*4.NSBackgroundColorAttributeName->設(shè)置字體所在區(qū)域背景顏色厕吉,取值為UIColor對象聪廉,默認(rèn)值為nil, 透明色?
*5.NSLigatureAttributeName->設(shè)置連體屬性乖订,取值為NSNumber對象(整數(shù)),0表示沒有連體字符逗鸣,1表示使用默認(rèn)的連體字符
*6.NSKernAttributeName->設(shè)置字符間距,取值為NSNumber對象(整數(shù))绰精,正值間距加寬撒璧,負(fù)值間距變窄
?*7.NSStrikethroughStyleAttributeName->設(shè)置刪除線,取值為NSNumber對象(整數(shù))?
*8.NSStrikethroughColorAttributeName->設(shè)置刪除線顏色笨使,取值為UIColor對象卿樱,默認(rèn)值為黑色
?*9.NSUnderlineStyleAttributeName->設(shè)置下劃線巢寡,取值為NSNumber對象(整數(shù))必孤,枚舉常量NSUnderlineStyle中的值,與刪除線類似?
*10.NSUnderlineColorAttributeName->設(shè)置下劃線顏色茴扁,取值為UIColor對象最爬,默認(rèn)值為黑色?
*11.NSStrokeWidthAttributeName->設(shè)置筆畫寬度(粗細(xì))涉馁,取值為NSNumber對象(整數(shù)),負(fù)值填充效果爱致,正值中空效果?
*12.NSStrokeColorAttributeName->填充部分顏色烤送,不是字體顏色,取值為UIColor對象?
*13.NSShadowAttributeName->設(shè)置陰影屬性糠悯,取值為NSShadow對象?
*14.NSTextEffectAttributeName->設(shè)置文本特殊效果帮坚,取值為NSString對象妻往,目前只有圖版印刷效果可用?
*15.NSBaselineOffsetAttributeName->設(shè)置基線偏移值,取值為NSNumber(float),正值上偏试和,負(fù)值下偏?
*16.NSObliquenessAttributeName->設(shè)置字形傾斜度讯泣,取值為NSNumber(float),正值右傾,負(fù)值左傾?
*17.NSExpansionAttributeName->設(shè)置文本橫向拉伸屬性阅悍,取值為NSNumber(float),正值橫向拉伸文本好渠,負(fù)值橫向壓縮文本?
*18.NSWritingDirectionAttributeName->設(shè)置文字書寫方向,從左向右書寫或者從右向左書寫?
*19.NSVerticalGlyphFormAttributeName->設(shè)置文字排版方向节视,取值為NSNumber對象(整數(shù))拳锚,0表示橫排文本,1表示豎排文本
*20.NSLinkAttributeName->設(shè)置鏈接屬性寻行,點(diǎn)擊后調(diào)用瀏覽器打開指定URL地址?
*21.NSAttachmentAttributeName->設(shè)置文本附件,取值為NSTextAttachment對象,常用于文字圖片混排
- (void)creatTitleLabel {self.titleLabel = [[UILabelalloc] initWithFrame:CGRectMake(20,50,320,400)];self.titleLabel.numberOfLines =0;self.titleLabel.layer.borderColor = [UIColorgrayColor].CGColor;self.titleLabel.layer.borderWidth =0.5;self.titleLabel.textAlignment =NSTextAlignmentLeft;? ? [self.view addSubview:self.titleLabel];NSString*string =@"An NSAttributedString object manages character strings and associated sets of attributes (for example, font and kerning) that apply to individual characters or ranges of characters in the string. An association of characters and their attributes is called an attributed string. ";/* 這句話就是對這個類的一個最簡明扼要的概括霍掺。NSAttributedString管理一個字符串,以及與該字符串中的單個字符或某些范圍的字符串相關(guān)的屬性拌蜘。它有一個子類NSMutableAttributedString
? ? * 具體實(shí)現(xiàn)時杆烁,NSAttributedString維護(hù)了一個NSString,用來保存最原始的字符串简卧,另有一個NSDictionary用來保存各個子串/字符的屬性兔魂。
? ? */
titleLabel.png
#pragma mark - NSMutableAttributedString 創(chuàng)建/* 三種初始化方法,NSMutableAttributedString沒有初始化方法,使用父類初始化方法, 使用initWithString:, initWithString:attributes:, 或者 initWithAttributedString: */NSAttributedString*attStri = [[NSAttributedStringalloc] initWithString:string attributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:30]}];NSMutableAttributedString*mAttStri = [[NSMutableAttributedStringalloc] initWithString:string];#pragma mark ** 1. NSFontAttributeName 設(shè)置字體屬性/* 字體大小 及 字體類型 */NSRangefont_range = [string rangeOfString:@"An"];? ? [mAttStri addAttribute:NSFontAttributeNamevalue:[UIFontsystemFontOfSize:30] range:font_range];? ? [mAttStri addAttribute:NSFontAttributeNamevalue:[UIFontfontWithName:@"Courier-BoldOblique"size:17.0] range:NSMakeRange(10,10)];
字體大小 及 字體類型 .png
#pragma mark ** 2. NSParagraphStyleAttributeName 設(shè)置文本段落排版格式NSMutableParagraphStyle*style = [[NSMutableParagraphStylealloc] init];? ? style.firstLineHeadIndent =20;? ? style.lineSpacing =10;? ? ? ? [mAttStri addAttribute:NSParagraphStyleAttributeNamevalue:style range:NSMakeRange(0, mAttStri.length /2)];
設(shè)置文本段落排版格式.png
#pragma mark ** 3. NSForegroundColorAttributeName 設(shè)置字體顏色/* 值為UIColor,字體顏色贞滨,默認(rèn)為黑色. */[mAttStri addAttribute:NSForegroundColorAttributeNamevalue:[UIColorredColor] range:NSMakeRange(0, mAttStri.length)];
設(shè)置字體顏色.png
#pragma mark ** 4. NSBackgroundColorAttributeName 設(shè)置字體所在區(qū)域背景顏色/* 值為UIColor入热,字體背景色,默認(rèn)透明. */[mAttStri addAttribute:NSBackgroundColorAttributeNamevalue:[UIColorgrayColor] range:NSMakeRange(0,20)];
設(shè)置字體所在區(qū)域背景顏色.png
#pragma mark ** 5. NSLigatureAttributeName 設(shè)置連體屬性/* 取值為NSNumber 對象(整數(shù)). 0 表示沒有連體字符, 1 表示使用默認(rèn)的連體字符. 一般中文用不到晓铆,在英文中可能出現(xiàn)相鄰字母連筆的情況 */[mAttStri addAttribute:NSLigatureAttributeNamevalue:@0range:NSMakeRange(0, mAttStri.length)];
#pragma mark ** 6. NSKernAttributeName 設(shè)置字符間距/* 值為浮點(diǎn)數(shù)NSNumber勺良,字距屬性,默認(rèn)值為0骄噪。*/[mAttStri addAttribute:NSKernAttributeNamevalue:@3range:NSMakeRange(0, mAttStri.length)];
設(shè)置字符間距.png
#pragma mark ** 7. NSStrikethroughStyleAttributeName 設(shè)置刪除線/* 值為整型NSNumber尚困,可取值為(取值大小為刪除線的寬度)
? ? ? ? enum {
? ? ? ? NSUnderlineStyleNone = 0×00,
? ? ? ? NSUnderlineStyleSingle = 0×01,
? ? ? ? }; 設(shè)置刪除線。
? ? */[mAttStri addAttribute:NSStrikethroughStyleAttributeNamevalue:@3range:NSMakeRange(3,7)];
設(shè)置刪除線.png
#pragma mark ** 8. NSStrikethroughColorAttributeName 設(shè)置刪除線顏色/* 這個屬性的值是一個UIColor對象. */[mAttStri addAttribute:NSStrikethroughColorAttributeNamevalue:[UIColorblueColor] range:NSMakeRange(3,3)];
設(shè)置刪除線顏色.png
#pragma mark ** 9. NSUnderlineStyleAttributeName 設(shè)置下劃線/* 取值為 NSNumber 對象(整數(shù))链蕊,枚舉常量 NSUnderlineStyle中的值事甜,與刪除線類似 */[mAttStri addAttribute:NSUnderlineStyleAttributeNamevalue:@2range:NSMakeRange(6,5)];
設(shè)置下劃線.png
#pragma mark ** 10. NSUnderlineColorAttributeName 設(shè)置下劃線顏色/* 這個屬性的值是一個UIColor對象.默認(rèn)值為nil. */[mAttStri addAttribute:NSUnderlineColorAttributeNamevalue:[UIColorblackColor] range:NSMakeRange(6,5)];
設(shè)置下劃線顏色.png
#pragma mark ** 11. NSStrokeWidthAttributeName 設(shè)置筆畫寬度(粗細(xì))/* 值為浮點(diǎn)數(shù)NSNumber。設(shè)置筆畫的粗細(xì)滔韵。負(fù)值填充效果逻谦,正值中空效果. */[mAttStri addAttribute:NSStrokeWidthAttributeNamevalue:@10range:NSMakeRange(50,30)];
設(shè)置筆畫寬度(粗細(xì)).png
#pragma mark ** 12. NSStrokeColorAttributeName 填充部分顏色,/* 不是字體顏色陪蜻,取值為 UIColor 對象 默認(rèn)值為nil邦马,設(shè)置的屬性同F(xiàn)oregroundColor。*/[mAttStri addAttribute:NSStrokeColorAttributeNamevalue:[UIColororangeColor] range:NSMakeRange(50,20)];
填充部分顏色.png
#pragma mark ** 13. NSShadowAttributeName 設(shè)置陰影屬性/* 值為NSShadow,設(shè)置筆畫的陰影滋将,默認(rèn)值為nil邻悬。*/NSShadow*shadow = [[NSShadowalloc]init];? ? shadow.shadowOffset =CGSizeMake(10,10);? ? shadow.shadowColor = [UIColorgreenColor];? ? [mAttStri addAttribute:NSShadowAttributeNamevalue:shadow range:NSMakeRange(20,10)];
設(shè)置陰影屬性.png
#pragma mark ** 14. NSTextEffectAttributeName 設(shè)置文本特殊效果/* 這個屬性的值是一個NSString對象。使用此屬性指定的文字效果随闽,如NSTextEffectLetterpressStyle父丰。此屬性的默認(rèn)值為nil,表示沒有文本效應(yīng)掘宪。*/[mAttStri addAttribute:NSTextEffectAttributeNamevalue:NSTextEffectLetterpressStylerange:NSMakeRange(80,10)];
設(shè)置文本特殊效果.png
#pragma mark ** 15. NSBaselineOffsetAttributeName 設(shè)置基線偏移值/* 此屬性的值是包含一個浮點(diǎn)值的NSNumber對象,表示的字符從基線偏移的NSNumber對象蛾扇,默認(rèn)值是0。正值上偏魏滚,負(fù)值下偏 */[mAttStri addAttribute:NSBaselineOffsetAttributeNamevalue:@5range:NSMakeRange(112,10)];
設(shè)置基線偏移值.png
#pragma mark ** 16. NSObliquenessAttributeName 設(shè)置字形傾斜度取值為 NSNumber (float),正值右傾屁桑,負(fù)值左傾/* 此屬性的值是包含一個浮點(diǎn)值的NSNumber對象。默認(rèn)值為0栏赴,表示沒有傾斜, 正值右傾,負(fù)值左傾靖秩。 */[mAttStri addAttribute:NSObliquenessAttributeNamevalue:@0.8range:NSMakeRange(135,15)];
設(shè)置字形傾斜度取值.png
#pragmamark ** 17. NSExpansionAttributeName 設(shè)置文本橫向拉伸屬性/* 取值為 NSNumber(float), 正值橫向拉伸文本, 負(fù)值橫向壓縮文本 */NSRange range =? [stringrangeOfString:@"An association of"];? ? [mAttStri addAttribute:NSExpansionAttributeName value:@1.0range:range];
設(shè)置文本橫向拉伸屬性png
#pragma mark ** 18. NSWritingDirectionAttributeName 設(shè)置文字書寫方向/**? ? ? * 取值為包含NSNumber對象的數(shù)組. 從左向右書寫或者從右向左書寫.? ? *? ? * The values of the NSNumber objects should be0,1,2,or3,forLRE, RLE, LRO,orRLO respectively,andcombinations of NSWritingDirectionLeftToRightandNSWritingDirectionRightToLeftwithNSTextWritingDirectionEmbeddingorNSTextWritingDirectionOverride,asshowninValues of NSWritingDirectionAttributeNameandequivalent markup.? ? ? ? ? */? ? NSRange rang2 = [string rangeOfString:@"characters and their"];? ? [mAttStri addAttribute:NSWritingDirectionAttributeName value:@[@3] range:rang2];
設(shè)置文字書寫方向.png
#pragma mark ** 19. NSVerticalGlyphFormAttributeName 設(shè)置文字排版方向/**
? ? * 值為整型NSNumber须眷,0為水平排版的字,1為垂直排版的字沟突。注意,在iOS中, 總是以橫向排版
? ? *
? ? * In iOS, horizontal text is always used and specifying a different value is undefined.
? ? */[mAttStri addAttribute:NSVerticalGlyphFormAttributeNamevalue:@1range:NSMakeRange(1,10)];
設(shè)置文字排版方向.png
#pragma mark ** 20. NSLinkAttributeName 設(shè)置鏈接屬性/**
? ? * 此屬性的值是NSURL對象(首選)或一個NSString對象花颗。此屬性的默認(rèn)值為nil,表示沒有鏈接惠拭。
? ? * UILabel無法使用該屬性, 可以使用UITextView 控件.
? ? */UITextView*textView = [[UITextViewalloc] initWithFrame:CGRectMake(20,450,320,60)];? ? [self.view addSubview:textView];? ? textView.backgroundColor? = [UIColorlightGrayColor];NSString*strLink =@"百度鏈接";NSAttributedString*attStr? = [[NSAttributedStringalloc] initWithString:strLink attributes:@{NSLinkAttributeName: [NSURLURLWithString:@"http://www.baidu.com"]}];? ? ? ? textView.editable =NO;/* 簽訂協(xié)議, 指定代理人之后. 但點(diǎn)擊鏈接時, 會回調(diào)協(xié)議方法 (- textView:shouldInteractWithURL:inRange:) */textView.delegate =self;? ? ? ? textView.attributedText = attStr;
設(shè)置鏈接屬性.png
#pragma mark ** 21. NSAttachmentAttributeName 設(shè)置文本附件/* 這個屬性的值是一個NSTextAttachment對象扩劝。此屬性的默認(rèn)值為nil,表示無附件职辅。*//**
? ? * 關(guān)于NSTextAttachment類的簡單說明
? ? *
? ? * NSTextAttachment 類有一個指定的初始化方法(- initWithData:ofType:), 需要指定附件文檔的數(shù)據(jù)和附件文件的類型. 如果附件文檔數(shù)據(jù)指定nil, 那么系統(tǒng)將會默認(rèn)指定為image對象作為值. 因此, 也可以通過這個特性實(shí)現(xiàn)圖文混排.
? ? * 下面就以附件為image對象來說明NSAttachmentAttributeName的使用.
? ? *
? ? */UILabel*label = [[UILabelalloc] initWithFrame:CGRectMake(20,550,320,60)];? ? label.backgroundColor = [UIColoryellowColor];? ? [self.view addSubview:label];/* 下面實(shí)現(xiàn)在百度兩個漢字之間插入一個照片 */NSString*stiAtt =@"百度";NSTextAttachment*attach = [[NSTextAttachmentalloc] initWithData:nilofType:nil];? ? attach.bounds =CGRectMake(0,0,50,50);? ? attach.image = [UIImageimageNamed:@"baidu.jpg"];NSAttributedString*strAtt = [NSAttributedStringattributedStringWithAttachment:attach];NSMutableAttributedString*strMatt = [[NSMutableAttributedStringalloc] initWithString:stiAtt];? ? ? ? [strMatt insertAttributedString:strAtt atIndex:1];? ? ? ? label.attributedText = strMatt;self.titleLabel.attributedText = mAttStri;? ? [self.titleLabel sizeToFit];? ? }#pragma mark - textView delegate - (BOOL)textView:(UITextView*)textView shouldInteractWithURL:(NSURL*)URL inRange:(NSRange)characterRange {NSLog(@"%s", __func__);NSLog(@"url: %@", URL);returnYES;}
設(shè)置文本附件.png
小禮物走一走棒呛,來簡書關(guān)注我