iOS利用NSMutableAttributedString實(shí)現(xiàn)富文本的方法小結(jié)
前言
在iOS開發(fā)過(guò)程中,經(jīng)常會(huì)用到給字體加下劃線,顯示不同顏色和大小的字體等需求,經(jīng)常遇到這種需求都是直接到百度或者谷歌直接把代碼粘過(guò)來(lái),并沒(méi)有做系統(tǒng)的整理,今天剛好有時(shí)間,把這部分的內(nèi)容整理一下,便于后續(xù)的開發(fā),閑話不說(shuō),接下來(lái)就跟著我一起來(lái)了解一下NSMutableAttributedString吧.
NSAttributedString
NSAttributedString對(duì)象管理適用于字符串中單個(gè)字符或字符范圍的字符串和關(guān)聯(lián)的屬性集(例如字體和字距)。NSAttributedString對(duì)象的默認(rèn)字體是Helvetica 12點(diǎn),可能與平臺(tái)的默認(rèn)系統(tǒng)字體不同。因此,您可能希望創(chuàng)建適用于您的應(yīng)用程序的非默認(rèn)屬性的新字符串。您還可以使用NSParagraphStyle類及其子類NSMutableParagraphStyle來(lái)封裝NSAttributedString類使用的段落或標(biāo)尺屬性。
實(shí)例化方法和使用方法
實(shí)例化方法
使用字符串初始化
- (instancetype)initWithString:(NSString *)str;
代碼示例
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"測(cè)試數(shù)據(jù)"];
字典中存放一些屬性名和屬性值
- (instancetype)initWithString:(NSString *)str attributes:(NSDictionary<NSString *,id> *)attrs;
代碼示例
NSDictionary *attributedDict = @{ NSFontAttributeName:[UIFont systemFontOfSize:16.0], NSForegroundColorAttributeName:[UIColor redColor], NSUnderlineStyleAttributeName:@(NSUnderlineStyleThick) }; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"測(cè)試數(shù)據(jù)" attributes:attributedDict];
使用NSAttributedString初始化,與NSMutableString,NSString類似
- (instancetype)initWithAttributedString:(NSAttributedString *)attrStr;
使用方法
為某一范圍內(nèi)的文字設(shè)置多個(gè)屬性的方法
- (void)setAttributes:(NSDictionary<NSString *,id> *)attrs range:(NSRange)range;
//代碼示例
NSString *string = @"測(cè)試數(shù)據(jù)"; NSDictionary *attributedDict = @{ NSFontAttributeName:[UIFont systemFontOfSize:16.0], NSForegroundColorAttributeName:[UIColor redColor], NSUnderlineStyleAttributeName:@(NSUnderlineStyleThick) }; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string]; [attributedString setAttributes:attributedDict range:NSMakeRange(0, string.length)];
為某一范圍內(nèi)的文字添加某個(gè)屬性的方法
- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;
//代碼示例
NSString *string = @"測(cè)試數(shù)據(jù)"; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string]; [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(0, string.length)];
為某一范圍內(nèi)的文字添加多個(gè)屬性的方法
- (void)addAttributes:(NSDictionary<NSString *,id> *)attrs range:(NSRange)range;
//代碼示例
NSString *string = @"測(cè)試數(shù)據(jù)"; NSDictionary *attributedDict = @{ NSFontAttributeName:[UIFont systemFontOfSize:16.0], NSForegroundColorAttributeName:[UIColor redColor], NSUnderlineStyleAttributeName:@(NSUnderlineStyleThick) }; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string]; [attributedString addAttributes:attributedDict range:NSMakeRange(0, string.length)];
移除某個(gè)范圍內(nèi)的某個(gè)屬性的方法
- (void)removeAttribute:(NSString *)name range:(NSRange)range;
//代碼示例
NSString *string = @"測(cè)試數(shù)據(jù)"; NSDictionary *attributedDict = @{ NSFontAttributeName:[UIFont systemFontOfSize:16.0], NSForegroundColorAttributeName:[UIColor redColor], NSUnderlineStyleAttributeName:@(NSUnderlineStyleThick) }; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string]; [attributedString addAttributes:attributedDict range:NSMakeRange(0, string.length)]; [attributedString removeAttribute:NSForegroundColorAttributeName range:NSMakeRange(0, string.length)];
屬性及說(shuō)明
key | 說(shuō)明 |
---|---|
NSFontAttributeName | 字體,value是UIFont對(duì)象 |
NSParagraphStyleAttributeName | 繪圖的風(fēng)格(居中,換行模式,間距等諸多風(fēng)格),value是NSParagraphStyle對(duì)象 |
NSForegroundColorAttributeName | 文字顏色,value是UIFont對(duì)象 |
NSLigatureAttributeName | 字符連體,value是NSNumber |
NSKernAttributeName | 字符間隔 |
NSStrikethroughStyleAttributeName | 刪除線,value是NSNumber |
NSUnderlineStyleAttributeName | 下劃線,value是NSNumber |
NSStrokeColorAttributeName | 描繪邊顏色,value是UIColor |
NSStrokeWidthAttributeName | 描邊寬度,value是NSNumber |
NSShadowAttributeName | 陰影,value是NSShadow對(duì)象 |
NSTextEffectAttributeName | 文字效果,value是NSString |
NSAttachmentAttributeName | 附屬,value是NSTextAttachment 對(duì)象 |
NSLinkAttributeName | 鏈接,value是NSURL or NSString |
NSBaselineOffsetAttributeName | 基礎(chǔ)偏移量,value是NSNumber對(duì)象 |
NSStrikethroughColorAttributeName | 刪除線顏色,value是UIColor |
NSObliquenessAttributeName | 字體傾斜 |
NSExpansionAttributeName | 字體扁平化 |
NSVerticalGlyphFormAttributeName | 垂直或者水平,value是 NSNumber,0表示水平,1垂直 |
富文本段落排版格式屬性說(shuō)明
屬性 | 說(shuō)明 |
---|---|
lineSpacing | 字體的行間距 |
firstLineHeadIndent | 首行縮進(jìn) |
alignment | (兩端對(duì)齊的)文本對(duì)齊方式:(左,中,右,兩端對(duì)齊,自然) |
lineBreakMode | 結(jié)尾部分的內(nèi)容以……方式省略 ( "...wxyz" ,"abcd..." ,"ab...yz") |
headIndent | 整體縮進(jìn)(首行除外) |
minimumLineHeight | 最低行高 |
maximumLineHeight | 最大行高 |
paragraphSpacing | 段與段之間的間距 |
paragraphSpacingBefore | 段首行空白空間 |
baseWritingDirection | 書寫方向(一共三種) |
hyphenationFactor | 連字屬性 在iOS,唯一支持的值分別為0和1 |
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
IOS開發(fā)筆記整理49之詳解定位CLLocation
在項(xiàng)目功能中有一個(gè)定位CLLocation的需求,遇到了一些知識(shí)難點(diǎn),經(jīng)過(guò)各位大俠的幫助,問(wèn)題解決,特此分享供大家學(xué)習(xí),希望大家共同學(xué)習(xí)進(jìn)步2015-11-11iOS開發(fā)中Quartz2D繪圖路徑的使用以及條紋效果的實(shí)現(xiàn)
這篇文章主要介紹了iOS開發(fā)中Quartz2D繪圖路徑的使用以及條紋效果的實(shí)現(xiàn),代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-11-11iOS App開發(fā)中修改UILabel默認(rèn)字體的方法
UILabel是控制字體顯示的主要方式,這里我們就來(lái)看看通過(guò)NSAttributedText和NSMutableAttributedText這兩個(gè)類或者用runtime的方式來(lái)在iOS App開發(fā)中修改UILabel默認(rèn)字體的方法2016-07-07iOS在固定的label上動(dòng)態(tài)顯示所有文字
這篇文章給大家主要介紹了iOS中如何實(shí)現(xiàn),在固定的label上動(dòng)態(tài)顯示所有文字的方法,文中給出了示例和思路,對(duì)大家的理解很有幫助,感興趣的朋友們下面來(lái)一起看看吧。2016-10-10iOS 自定義狀態(tài)欄和導(dǎo)航欄詳細(xì)介紹
這篇文章主要介紹了iOS 自定義狀態(tài)欄和導(dǎo)航欄詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-11-11iOS UITextField最大字符數(shù)和字節(jié)數(shù)的限制詳解
在開發(fā)中我們經(jīng)常遇到這樣的需求:在UITextField或者UITextView中限制用戶可以輸入的最大字符數(shù)。但在UITextView , UITextfield 中有很多坑,網(wǎng)上的方法也很多。但是并不是很全面吧,這里全面進(jìn)行了總結(jié),有需要的朋友們可以參考借鑒,下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。2016-11-11