iOS NSMutableAttributedString常用方法總結

NSAttributedString?叫做富文本,是一種帶有屬性的字符串,通過它可以輕松的在一個字符串中表現出多種字體、字號、字體大小等各不相同的風格,還可以對段落進行格式化,一般都是對可變富文本(NSMutableAttributedString)進行一些操作

一、NSMutableAttributedString 類的部分常用方法

// 在一定范圍中添加單個文字屬性
// 參數1:字符屬性名
// 參數2:屬性值
// 參數3:范圍
- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;// 在一定范圍中使用字典添加多個文字屬性
// 參數1:屬性字典
// 參數2:范圍
- (void)addAttributes:(NSDictionary<NSString *, id> *)attrs range:(NSRange)range;// 在一定范圍中刪除文字具有的某個文字屬性
// 參數1:字符屬性名
// 參數2:范圍
- (void)removeAttribute:(NSString *)name range:(NSRange)range;// 在一定范圍中替換字符串
// 參數1:范圍
// 參數2:要替換的字符串
- (void)replaceCharactersInRange:(NSRange)range withAttributedString:(NSAttributedString *)attrString;// 在對應的角標處插入富文本
// 參數1:要插入的字符串
// 參數2:要插入的角標位置
- (void)insertAttributedString:(NSAttributedString *)attrString atIndex:(NSUInteger)loc;// 將某個富文本拼接到后面
// 參數:要拼接的字符串
- (void)appendAttributedString:(NSAttributedString *)attrString;// 刪除一定范圍中的字符
// 參數:范圍
- (void)deleteCharactersInRange:(NSRange)range;// 將字符串全部置換為另一個富文本字符串
// 參數:置換后的富文本字符串
- (void)setAttributedString:(NSAttributedString *)attrString;

二、字符屬性

 1.NSString *const NSFontAttributeName(字體):

  該屬性所對應的值是一個 UIFont 對象。該屬性用于改變一段文本的字體。如果不指定該屬性,則默認為12-point Helvetica(Neue)。

 2.NSString *const NSParagraphStyleAttributeName(段落):

  該屬性所對應的值是一個?NSParagraphStyle?對象。該屬性在一段文本上應用多個屬性。如果不指定該屬性,則默認為 NSParagraphStyle 的 defaultParagraphStyle 方法返回的默認段落屬性。想要了解NSParagraphStyle可以自行百度學習,在這里不詳細描述。注意:lable的numberOfLines屬性必須設置為0,段落樣式才能生效。

 3.NSString *const NSForegroundColorAttributeName(字體顏色):

  該屬性所對應的值是一個 UIColor 對象。該屬性用于指定一段文本的字體顏色。如果不指定該屬性,則默認為黑色。

 4.NSString *const NSBackgroundColorAttributeName(字體背景色):

  該屬性所對應的值是一個 UIColor 對象。該屬性用于指定一段文本的背景顏色。如果不指定該屬性,則默認無背景色。

 5.NSString *const NSLigatureAttributeName(連字符):

  該屬性所對應的值是一個 NSNumber 對象(整數)。連體字符是指某些連在一起的字符,它們采用單個的圖元符號。0 表示沒有連體字符。1 表示使用默認的連體字符。2表示使用所有連體符號。默認值為 1(注意,iOS 不支持值為 2)。

 6.NSString *const NSKernAttributeName(字間距):

  該屬性所對應的值是一個 NSNumber 對象(整數)。連體字符是指某些連在一起的字符,它們采用單個的圖元符號。0 表示沒有連體字符。1 表示使用默認的連體字符。2表示使用所有連體符號。默認值為 1(注意,iOS 不支持值為 2)。

 7.NSString *const NSStrikethroughStyleAttributeName(刪除線):

  該屬性所對應的值是一個 NSNumber 對象(整數)。該值指定是否在文字上加上刪除線,該值參考“Underline Style Attributes”。默認值是NSUnderlineStyleNone。

 8.NSString *const NSUnderlineStyleAttributeName(下劃線):

  該屬性所對應的值是一個 NSNumber 對象(整數)。該值指定是否在文字上加上下劃線,該值參考“Underline Style Attributes”。默認值是NSUnderlineStyleNone。

 9.NSString *const NSStrokeColorAttributeName(邊線顏色):

   該屬性所對應的值是一個 UIColor 對象。如果該屬性不指定(默認),則等同于 NSForegroundColorAttributeName。否則,指定為刪除線或下劃線顏色。更多細節見“Drawing attributedstrings that are both filled and stroked”。

 10.NSString *const NSStrokeWidthAttributeName(邊線寬度):

  該屬性所對應的值是一個 NSNumber 對象(小數)。該值改變描邊寬度(相對于字體size 的百分比)。默認為 0,即不改變。正數只改變描邊寬度。負數同時改變文字的描邊和填充寬度。例如,對于常見的空心字,這個值通常為3.0。

 11.NSString *const NSShadowAttributeName(陰影):

  該屬性所對應的值是一個 NSShadow 對象。默認為 nil。

 12.NSString *const NSVerticalGlyphFormAttributeName(橫豎排版):

  該屬性所對應的值是一個 NSNumber 對象(整數)。0 表示橫排文本。1 表示豎排文本。在 iOS 中,總是使用橫排文本,0 以外的值都未定義

?三、代碼示例

 在這里給大家舉了幾個簡單的例子,有興趣的可以嘗試其余屬性的效果。

  • 字符串沒有添加屬性
    NSString *contentStr = @"Hello World!";// 初始化屬性字符串NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:[contentStr stringByAppendingString:@"\n\n"]];

  • 添加單個屬性(以字體顏色和字體大小為例)
    [attrStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(6, 6)];[attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:25] range:NSMakeRange(0, 12)];

  • 使用屬性字典添加多個屬性
   [attrStr addAttributes:@{NSForegroundColorAttributeName : [UIColor yellowColor],NSBackgroundColorAttributeName : [UIColor lightGrayColor]}range:NSMakeRange(0,6)];

  • 刪除屬性
    [attrStr removeAttribute:NSForegroundColorAttributeName range:NSMakeRange(6, 3)];[attrStr removeAttribute:NSBackgroundColorAttributeName range:NSMakeRange(5, 1)];

字符串全部替換

?

   NSAttributedString *str = [[NSAttributedString alloc] initWithString:@"123"];[attrStr setAttributedString:str];

?

?

?

 以上是部分方法的使用,大家有興趣的可以自己試試其他的方法。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248097.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248097.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248097.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微信小程序image bindload事件失效不觸發

1.先上代碼 <template><div :class"[img-wrapper, className]"><img :src"defaultSrc" :mode"mode" class"default-img" :hidden"loaded"><img :src"src" :mode"mode" load"…

數據可視化(BI報表的開發)第三天

20、銷售統計-布局 html結構&#xff1a; <!-- 銷售額 --><div class"sales panel"><div class"inner"><div class"caption"><h3>銷售額統計</h3><a href"javascript:;" class"active&q…

軟件開發工具(第1章:緒論)

一、 軟件開發工具的由來 計算機語言和軟件開發工具的發展和歷史 機器語言&#xff08;第一代語言&#xff09;&#xff1a;難以記憶的、無意義的、二進 制的字符串 匯編語言&#xff08;第二代語言&#xff09;針對難以記憶的、無意義的、二進 制的字符串、人們試圖用英語中具…

Swift傻傻分不清楚系列(一)常量與變量

菜鳥從零開始認識學習Swift。感謝大神們翻譯的文檔。搬到自己小黑屋里慢慢看~~~ 本頁包含內容&#xff1a; 常量和變量聲明常量和變量類型標注常量和變量的命名輸出常量和變量注釋分號 Swift 是一門開發 iOS, OS X 和 watchOS 應用的新語言。然而&#xff0c;如果你有 C 或者 …

Saiku Table展示數據合并bug修復(二十五)

Saiku Table展示數據合并bug修復 Saiku以table的形式展示數據&#xff0c;如果點擊了 非空的字段 按鈕&#xff0c;則會自動進行數據合并&#xff0c;為空的數據行以及數據列都會自動隱藏掉。 首先我們應該定位問題&#xff1a; 1.查看接口返回值&#xff0c;會發現接口返回都正…

軟件開發工具(第2章:軟件開發過程及其組織)

一、軟件開發的困難 程序員做好軟件工作的關鍵是什么&#xff1f; 關鍵是兩個轉換&#xff1a; 第一個轉換是用戶對軟件功能的理解與程序員對軟件功能的理解之間的轉換。 &#xff08;不同?業的?員對于事物的認識?法與描述?法是不同的。&#xff09; 第二個轉換要解決的是人…

數據可視化(BI報表的開發)第四天

練習題&#xff1a; 先找出字符串 ‘8587263747153203552943982’ 中出現次數最多的數字及次數&#xff0c;然后去重后并排序&#xff08;不準使用sort&#xff09;&#xff0c;使得到結果為 ‘0123456789’。 要求1&#xff1a;找到出現最多的數字和出現的次數 // 1、找出出…

Swift傻傻分不清楚系列(二)數據類型

本頁包含內容&#xff1a; 整數整數范圍IntUInt浮點數類型安全和類型推斷數值型字面量數值型類型轉換整數轉換數整數和浮點數轉換類型別名布爾值 整數 整數就是沒有小數部分的數字&#xff0c;比如42和-23。整數可以是有符號&#xff08;正、負、零&#xff09;或者無符號&…

Python打卡第四周

這一周鴿了好久&#xff0c; 因為最近在準備比賽。課程一直沒跟上。。。 今天整理完本周的知識之后休息一周復習之前的 好了。 上總結 第一天 裝飾器定義函數bar&#xff0c;在foo中調用 # def foo(): # # print(in the foo) # # bar() # # foo()def bar():print(in th…

網絡經濟與企業管理(第 1 章:企業管理概論)

一、企業的概念 什么是企業&#xff1f; 1.企業以市場為導向&#xff0c;以價值增值作為經濟活動的目的 2.企業是從事商品生產和流通的經濟組織 3.企業經營過程中要自主經營、自負盈虧、獨立核算和承擔風險&#xff0c;具有法人資格的基本經濟單位 企業發展的三個時期&#xff…

js高級 — ES6

ECMAScript 6 目標&#xff1a;學習完 ES6 可以掌握方便后續的開發&#xff0c;未來工作中大量使用 ES6 開發 ECMAScript 6 介紹ECMAScript 6 新增語法內置對象的擴展ECMAScript 6 降級處理&#xff08;學習完node再講&#xff09; 1. ECMAScript 6 介紹 ES – ECMAScript …

Swift傻傻分不清楚系列(三)元組與可選類型

本頁包含內容&#xff1a; 元組可選nilif 語句以及強制解析可選綁定隱式解析可選類型錯誤處理斷言 元組 元組&#xff08;tuples&#xff09;把多個值組合成一個復合值。元組內的值可以是任意類型&#xff0c;并不要求是相同類型。 下面這個例子中&#xff0c;(404, "Not…

去死吧!USB轉串口!!!

首先&#xff0c;這個題目有兩種歧義&#xff1a;1、USB轉232串口&#xff08;嚴格說就是這種&#xff09;&#xff01; 2、USB轉USART串口&#xff08;通常都是這么叫&#xff0c;認為就是這&#xff0c;理論上是錯誤的&#xff0c;歧義所在&#xff09;&#xff01; USB轉TTL…

IDEA微服務項目的application.yml沒有綠色葉子的解決辦法

1.今天在寫微服務項目的時候成功入坑&#xff0c;那么問題是啥呢&#xff1f;接下來和我一起走入bug的世界吧&#xff0c;讓我們看看究竟是怎么回事。 *問題描述    1.application.yml是灰色的小格子 2.實在難看 *需要解決的最終結果 1.有綠色的小葉子 解決方案上圖 1. 2. …

Ajax — 第一天

上網的目的 本質目的&#xff1a;瀏覽和消費資源 資源&#xff1a;文字、圖片、音頻、視頻…資源存在哪里&#xff1a;服務器上 服務器的概念 是負責存放和對外提供資源的電腦。它的性能比普通的計算機好太多了 客戶端 獲取和消費資源的電腦&#xff0c;叫做客戶端。 我…

linux 查看進程

1.ps 各字段含義 如果讓程序始終在后臺執行&#xff0c;即使關閉當前的終端也執行&#xff08;之前的&做不到&#xff09;&#xff0c;這時候需要nohup。 該命令可以在你退出帳戶/關閉終端之后繼續運行相應的進程。關閉中斷后&#xff0c;在另一個終端jobs已經無法看到后臺…

Swift傻傻分不清楚系列(四)基本運算符 o_O!???

本頁包含內容&#xff1a; 術語賦值運算符算術運算符組合賦值運算符比較運算符三目運算符空合運算符區間運算符邏輯運算符 運算符是檢查、改變、合并值的特殊符號或短語。例如&#xff0c;加號&#xff08;&#xff09;將兩個數相加&#xff08;如 let i 1 2&#xff09;。更…

網絡經濟與企業管理(第 2 章:企業戰略管理)

一、戰略的性質與類型 什么是戰略&#xff1a;企業發展的謀劃 企業戰略的三個層次&#xff1a; 企業總體戰略&#xff1a;又稱經營戰略&#xff0c;是企業整體運營的指導思想事業層戰略&#xff1a;又稱競爭戰略、業務層次戰略、SBU戰略&#xff0c; 指導具體戰略經營單位。職能…

Ajax — 圖書管理

注意&#xff1a;本項目基于 jQuery 文件下進行的 Ajax 請求項目&#xff0c;需要映入jQuery文件&#xff01; <body style"padding: 15px;"><!-- 添加圖書的Panel面板 --><div class"panel panel-primary"><div class"panel-h…

vue動態加載組件

vue動態加載組件&#xff0c;可以使用以下方式 <component :is"propertyname" v-for"tab in tabs"></component> :is必須是指向data里面的變量&#xff0c;如果使用is"proname"&#xff0c;那么is指向的名稱&#xff0c;必須在compo…