iOS富文本字符串AttributedString詳解
iOS富文本編輯(在label里顯示文字和圖片)
uilabel attributedText使用的方式
NSMutableParagraphStyle與NSParagraphStyle的使用
如何使用
UILabel *connmentsUserLabel = [[UILabel alloc]init];
connmentsUserLabel.font = [UIFont systemFontOfSize:12];
connmentsUserLabel.textColor = [UIColor grayColor];
connmentsUserLabel.numberOfLines = 0;
//拼接字段
NSString *replyMessage = [NSString stringWithFormat:@"%@: %@", userModel.nickname, commentsModel.content];
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc]initWithString:replyMessage];
//拼接顏色
[attr addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:87/255.0f green:107/255.0f blue:149/255.0f alpha:1] range:[replyMessage rangeOfString:@"隨便寫(xiě)的"]];
connmentsUserLabel.attributedText = attr;
計(jì)算富文本的size
CGSize attSize = [attr boundingRectWithSize:CGSizeMake(300, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil].size;
在iOS使用富文本設(shè)置字典
NSMutableAttributedString
NSMutableDictionary * attributes = [NSMutableDictionary dictionary];
// 設(shè)置背景色
attributes[NSBackgroundColorAttributeName] = [UIColor purpleColor];
// 設(shè)置前景色
attributes[NSForegroundColorAttributeName] = [UIColor redColor];
// 顏色
attributes[NSStrikethroughColorAttributeName] = [UIColor purpleColor];
// 樣式
attributes[NSStrikethroughStyleAttributeName] = @2;
NSAttributedString * priceAttr = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"¥%@", _model.lastPrice] attributes:attributes];
// 設(shè)置UILabel的富文本顯示
self.priceLabel.attributedText = priceAttr;
字符屬性可以應(yīng)用于 attributed string 的文本中
iOS 字符屬性NSAttributedString描述
NSString *const NSFontAttributeName;(字體)
NSString *const NSParagraphStyleAttributeName;(段落)
NSString *const NSForegroundColorAttributeName;(字體顏色)
NSString *const NSBackgroundColorAttributeName;(字體背景色)
NSString *const NSLigatureAttributeName;(連字符)
NSString *const NSKernAttributeName;(字間距)
NSString *const NSStrikethroughStyleAttributeName;(刪除線)
NSString *const NSUnderlineStyleAttributeName;(下劃線)
NSString *const NSStrokeColorAttributeName;(邊線顏色)
NSString *const NSStrokeWidthAttributeName;(邊線寬度)
NSString *const NSShadowAttributeName;(陰影)(橫豎排版)
NSString *const NSVerticalGlyphFormAttributeName;
常量
1> NSFontAttributeName(字體)
該屬性所對(duì)應(yīng)的值是一個(gè) UIFont 對(duì)象艰毒。該屬性用于改變一段文本的字體杈湾。如果不指定該屬性吏垮,則默認(rèn)為12-point Helvetica(Neue)。
2> NSParagraphStyleAttributeName(段落)
該屬性所對(duì)應(yīng)的值是一個(gè) NSParagraphStyle 對(duì)象敷燎。該屬性在一段文本上應(yīng)用多個(gè)屬性。如果不指定該屬性燥狰,則默認(rèn)為 NSParagraphStyle 的defaultParagraphStyle 方法返回的默認(rèn)段落屬性圈驼。
3> NSForegroundColorAttributeName(字體顏色)
該屬性所對(duì)應(yīng)的值是一個(gè) UIColor 對(duì)象。該屬性用于指定一段文本的字體顏色隐圾。如果不指定該屬性伍掀,則默認(rèn)為黑色。
4> NSBackgroundColorAttributeName(字體背景色)
該屬性所對(duì)應(yīng)的值是一個(gè) UIColor 對(duì)象暇藏。該屬性用于指定一段文本的背景顏色蜜笤。如果不指定該屬性,則默認(rèn)無(wú)背景色盐碱。
5> NSLigatureAttributeName(連字符)
該屬性所對(duì)應(yīng)的值是一個(gè) NSNumber 對(duì)象(整數(shù))瘩例。連體字符是指某些連在一起的字符,它們采用單個(gè)的圖元符號(hào)甸各。0 表示沒(méi)有連體字符垛贤。1 表示使用默認(rèn)的連體字符。2表示使用所有連體符號(hào)趣倾。默認(rèn)值為 1(注意聘惦,iOS 不支持值為 2)。
6> NSKernAttributeName(字間距)
該屬性所對(duì)應(yīng)的值是一個(gè) NSNumber 對(duì)象(整數(shù))。字母緊排指定了用于調(diào)整字距的像素點(diǎn)數(shù)善绎。字母緊排的效果依賴于字體黔漂。值為 0 表示不使用字母緊排。默認(rèn)值為0禀酱。
7> NSStrikethroughStyleAttributeName(刪除線)
該屬性所對(duì)應(yīng)的值是一個(gè) NSNumber 對(duì)象(整數(shù))炬守。該值指定是否在文字上加上刪除線,該值參考“Underline Style Attributes”剂跟。默認(rèn)值是NSUnderlineStyleNone减途。
8> NSUnderlineStyleAttributeName(下劃線)
該屬性所對(duì)應(yīng)的值是一個(gè) NSNumber 對(duì)象(整數(shù))。該值指定是否在文字上加上下劃線曹洽,該值參考“Underline Style Attributes”鳍置。默認(rèn)值是NSUnderlineStyleNone。
9> NSStrokeColorAttributeName(邊線顏色)
該屬性所對(duì)應(yīng)的值是一個(gè) UIColor 對(duì)象送淆。如果該屬性不指定(默認(rèn))税产,則等同于 NSForegroundColorAttributeName。否則偷崩,指定為刪除線或下劃線顏色辟拷。更多細(xì)節(jié)見(jiàn)“Drawing attributedstrings that are both filled and stroked”。
10> NSStrokeWidthAttributeName(邊線寬度)
該屬性所對(duì)應(yīng)的值是一個(gè) NSNumber 對(duì)象(小數(shù))阐斜。該值改變描邊寬度(相對(duì)于字體size 的百分比)衫冻。默認(rèn)為 0,即不改變智听。正數(shù)只改變描邊寬度羽杰。負(fù)數(shù)同時(shí)改變文字的描邊和填充寬度。例如到推,對(duì)于常見(jiàn)的空心字考赛,這個(gè)值通常為3.0。
11> NSShadowAttributeName(陰影)
該屬性所對(duì)應(yīng)的值是一個(gè) NSShadow 對(duì)象莉测。默認(rèn)為 nil颜骤。
12> NSVerticalGlyphFormAttributeName(橫豎排版)
該屬性所對(duì)應(yīng)的值是一個(gè) NSNumber 對(duì)象(整數(shù))。0 表示橫排文本捣卤。1 表示豎排文本忍抽。在 iOS 中,總是使用橫排文本董朝,0 以外的值都未定義鸠项。