1. 程式人生 > >iOS: 富文字AttributedString的詳解

iOS: 富文字AttributedString的詳解

AttributedString可以分為NSAttributedString和NSMutableAttributedString兩種,在使用中通過把AttributedString賦值給控制元件的attributedText屬性來新增文字樣式。具有該屬性的控制元件有UILabel、UITextField和UITextView。

首先,初始化:

NSString *string = @"這是一個富文字字串";
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string
];

然後,根據API中屬性順序依次詳細說明:

這裡寫圖片描述

No.1 字型

[attributedString addAttribute:NSFontAttributeName
                         value:[UIFont systemFontOfSize:30.0f]
                         range:NSMakeRange(4, 3)];

這裡寫圖片描述

No.2 段落

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
//行間距
paragraphStyle.lineSpacing = 5.f; //段落間距 paragraphStyle.paragraphSpacing = 5.f; //段落縮排畫素 paragraphStyle.firstLineHeadIndent = 25.f; //整體縮排畫素 paragraphStyle.headIndent = 10.f; //對齊方式 paragraphStyle.alignment = NSTextAlignmentLeft; //段落[其他屬性參照NSMutableParagraphStyle] [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0
, attributedString.length)];

這裡寫圖片描述

No.3 前景色

[attributedString addAttribute:NSForegroundColorAttributeName
                         value:[[UIColor redColor]
                         range:NSMakeRange(4, 3)];

這裡寫圖片描述

No.4 背景色

[attributedString addAttribute:NSBackgroundColorAttributeName
                         value:[UIColor redColor]
                         range:NSMakeRange(4, 3)];

這裡寫圖片描述

No.5 連字元

string = @"flash player";
attributedString = [[NSMutableAttributedString alloc] initWithString:string];
[attributedString addAttribute:NSLigatureAttributeName
                         value:@1
                         range:NSMakeRange(0, 5)];
[attributedString addAttribute:NSFontAttributeName
                         value:[UIFont fontWithName:@"futura" size:30]
                         range:NSMakeRange(0, 5)];

這裡寫圖片描述

No.6 文字間距

[attributedString addAttribute:NSKernAttributeName
                         value:@10                  
                         range:NSMakeRange(3, 4)];

這裡寫圖片描述

No.7 刪除線

[attributedString addAttribute:NSStrikethroughStyleAttributeName
                         value:@(NSUnderlinePatternSolid | NSUnderlineStyleSingle)
                         range:NSMakeRange(4, 3)];
[attributedString addAttribute:NSBaselineOffsetAttributeName
                         value:@1
                         range:NSMakeRange(4, 3)];
[attributedString addAttribute:NSStrikethroughColorAttributeName
                         value:[UIColor redColor]
                         range:NSMakeRange(4, 3)];

這裡寫圖片描述

No.8 下劃線

//下劃線
[attributedString addAttribute:NSUnderlineStyleAttributeName
                         value:@(NSUnderlineStyleSingle)
                         range:NSMakeRange(4, 3)];
//下劃線顏色
[attributedString addAttribute:NSUnderlineColorAttributeName
                         value:[UIColor redColor]
                         range:NSMakeRange(4, 3)];

這裡寫圖片描述

No.9 空心字

//描邊顏色需和描邊寬度一起使用
[attributedString addAttribute:NSStrokeColorAttributeName
                         value:[UIColor redColor]
                         range:NSMakeRange(4, 3)];
[attributedString addAttribute:NSStrokeWidthAttributeName
                         value:@1.5
                         range:NSMakeRange(4, 3)];                  

這裡寫圖片描述

No.10 陰影

NSShadow *shadow = [[NSShadow alloc] init];  
shadow.shadowOffset = CGSizeMake(0, 1);  
shadow.shadowBlurRadius = 2; 
shadow.shadowColor = [UIColor greenColor];   
[attributedString addAttribute:NSShadowAttributeName
                         value:shadow
                         range:NSMakeRange(4, 3)];    

這裡寫圖片描述

No.11 圖文混排

NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init];
textAttachment.image = [UIImage imageNamed:@"emotion_0"];
textAttachment.bounds = CGRectMake(0, -6, 30, 30);  
NSAttributedString *attachmentAttrStr = [NSAttributedString attributedStringWithAttachment:textAttachment];
[attributedString insertAttributedString:attachmentAttrStr atIndex:7];

這裡寫圖片描述

No.12 連結

attributedString = [[NSMutableAttributedString alloc] initWithString:@"這是一個網址:https://github.com/dexianyinjiu"];
[attributedString addAttribute:NSLinkAttributeName
                         value:@"https://github.com/dexianyinjiu"
                         range:NSMakeRange(7, attributedString.length-7)];

這裡寫圖片描述

No.13 基線偏移

[attributedString addAttribute:NSBaselineOffsetAttributeName
                         value:@(10.f)
                         range:NSMakeRange(4, 3)];

這裡寫圖片描述

No.14 傾斜

[attributedString addAttribute:NSObliquenessAttributeName
                         value:@(0.5f)
                         range:NSMakeRange(4, 3)];

這裡寫圖片描述

No.15 拉伸/壓縮

[attributedString addAttribute:NSExpansionAttributeName
                         value:@(0.5f)
                         range:NSMakeRange(4, 3)];

這裡寫圖片描述

No.16 書寫方向

[attributedString addAttribute:NSWritingDirectionAttributeName
                         value:@[@(NSWritingDirectionRightToLeft | NSWritingDirectionOverride)]
                         range:NSMakeRange(0, attributedString.length)];

這裡寫圖片描述

No.17 橫/豎向排版

//0:橫向排版 其他:豎向排版  
[attributedString addAttribute:NSVerticalGlyphFormAttributeName
                         value:@1   
                         range:NSMakeRange(0, attributedString.length)];

這裡寫圖片描述

相關推薦

iOS 文字AttributedString

AttributedString可以分為NSAttributedString和NSMutableAttributedString兩種,在使用中通過把AttributedString賦值給控制元件的attributedText屬性來新增文字樣式。具有該屬性的控制元

百度編輯器UEEDITOR使用簡單介紹 UEditor表單提交和後臺互動 最後更新對應的版本1.2.5.1 教程描述 文字編輯器的使用開發中,表單提交有多種場景,編輯器初始化有新增文章和編輯

UEditor表單提交和後臺互動詳解最後更新對應的版本:1.2.5.1 教程描述: 富文字編輯器的使用開發中,表單提交有多種場景,編輯器初始化有新增文章和編輯就文章兩種場景,提交表單有普通提交也有ajax提交表單兩種情景,此教程詳細講解這幾種場景下如何保證後臺正確拿到資料。 一、編輯器內容初始化(即往編

iOS開發之再探多執行緒程式設計Grand Central Dispatch

Swift3.0相關程式碼已在github上更新。之前關於iOS開發多執行緒的內容釋出過一篇部落格,其中介紹了NSThread、操作佇列以及GCD,介紹的不夠深入。今天就以GCD為主題來全面的總結一下GCD的使用方式。GCD的歷史以及好處在此就不做過多的贅述了。本篇部落格會通過一系列的例項來好好的總結一下GC

視訊記憶體文字模式 ———《x86組合語言從真實模式到保護模式》讀書筆記補遺02

文章修改記錄 修改日期 修改內容 2018-2-4 修改了一處錯別字;增加了表格的使用方法 今天我們討論如何程式設計以在螢幕上顯示出彩色的文字。 為了顯示文字,通常需要兩種硬體——顯示器和顯示卡。 顯示卡的作用是為顯示器

ASP.NET MVC5 新特性Attribute路由使用

ref 否則 back default static 引入 擁有 bsp pathinfo 1、什麽是Attribute路由?怎麽樣啟用Attribute路由?   微軟在 ASP.NET MVC5 中引入了一種新型路由:Attribute路由,顧名思義,Attribute

深入理解JAVA I/O系列三字符流

buffer 情況 二進制文件 感到 復制代碼 使用範圍 轉換 fileread 方式 字符流為何存在 既然字節流提供了能夠處理任何類型的輸入/輸出操作的功能,那為什麽還要存在字符流呢?容我慢慢道來,字節流不能直接操作Unicode字符,因為一個字符有兩個字節,字節流一次只

轉載centos安裝gitlab

smtp發送郵件 下載 ror mage package nload git clone 輸入 clas 原文地址:http://blog.csdn.net/jiangtao_st/article/details/73612298 一, 服務器快速搭建gitlab方法 可以

Java虛擬機內存模型

調用 數據類型 可擴展 空間 共享 sof 虛擬機 進程 部分 版權聲明:本文為博主原創文章,轉載請註明出處,歡迎交流學習! 我們都知道,當虛擬機執行Java代碼的時候,首先要把字節碼文件加載到內存,那麽這些類的信息都存放在內存中的哪個區域呢?當我們創建一個

Spring Boot系列教程四配置文件properties

date int ava ota axu return 端口 rand work 一.配置隨機數,使用隨機數 在application.properties文件添加配置信息 1 #32位隨機數 2 woniu.secret=${random.value} 3 #隨機整數

HttpModule與HttpHandler

兩個 pro 密碼 work ring eve directory 配置信息 讓其 ASP.NET對請求處理的過程:當請求一個*.aspx文件的時候,這個請求會被inetinfo.exe進程截獲,它判斷文件的後綴(aspx)之後,將這個請求轉交給 ASPNET_ISAPI.

小程序學習筆記二頁面文件之 .json文件

fresh 小程序 整體 屬性 spa hit rbac style mdi 頁面配置文件—— pageName.json 每一個小程序頁面可以使用.json文件來對本頁面的窗口表現進行配置,頁面中配置項會覆蓋 app.json 的 window 中相同的配置

Android進階筆記AIDL內部實現 (二)

ucc == 筆記 null stack 直接 android 最好 public 接著上一篇分析的aidl的流程解析。知道了aidl主要就是利用Ibinder來實現跨進程通信的。既然是通過對Binder各種方法的封裝,那也可以不使用aidl自己通過Binder來實現跨進

hibernate框架學習筆記2配置文件

格式化 version validate ret root 主鍵生成策略 -m color 格式 實體類: package domain; public class Customer { private Long cust_id; priva

Node入門教程(8)第六章path 模塊

format QQ 調用 保留 微軟 posix interface join 結果 path 模塊詳解 path 模塊提供了一些工具函數,用於處理文件與目錄的路徑。由於windows和其他系統之間路徑不統一,path模塊還專門做了相關處理,屏蔽了彼此之間的差異。 可移

IP地址和子網劃分學習筆記之《知識學習篇子網劃分

子網掩碼 IP地址 子網劃分 在學習掌握了前面的IP地址和子網劃分之《進制計數》和IP地址和子網劃分之《IP地址詳解》這兩部分知識後,接下來將學習子網劃分。 一、子網掩碼 要學習子網劃分,首先就要必須知道子網掩碼,只有掌握了子網掩碼這部分內容,才能很好的理解和劃分子網。 1、子網掩碼介紹 子網掩碼

華為交換機私有hybird接口模式(案例+原理

華為 hybird 華為交換機私有hybird接口模式:(案例+原理詳解) 實驗說明: 準備:如圖pc1 pc2同屬於VLAN10,配置相應的ippc3 pc4同屬於VLAN20 配置相應的ipClient 屬於 VLAN30 配置pc1同網段ipPc1 pc2 client 屬於同網段

雲計算Python自動化Python變量

雲計算python學習過程中會用到許多數據,那為了方便操作,需要把這些數據分別用一個簡單的名字代表,方便在接下來的程序中引用。 變量就是代表某個數據(值)的名稱。簡單點說變量就是給數據起個名字 變量名稱的命名: 由字母數字下劃線組成的,且不能以數字開頭,不能使用關鍵字,區分大小寫。 命名慣例: 以單一下劃

java基礎之JDBC一概述及步驟

etx fileread 操作 [] 全路徑 api mysql edi lean 1. JDBC的簡介 概述: 就是Java用來操作不同數據庫(DBMS)的類庫(技術), 本質就是一些類和接口. /* 類: Dri

Spark核心RDDcombineByKey函數

sta 3.0 vbscript map ner 初始化 partition 得到 new https://blog.csdn.net/jiangpeng59/article/details/52538254 為什麽單獨講解combineByKey? 因為comb

iOS培訓就業前景分析

ios ui設計 流行 ext -o 設備 水平 shadow 基於 OS是目前最為流行、最熱門的操作系統之一,在全球有著不可替代的地位,雖然在中國,android的市場占有率與iOS想比較要高的多,但是iOS系統的蘋果手機在中國也屬於高端品牌。從品牌以及系統技術含量上來看