1. 程式人生 > >關於Text Kit 一些事

關於Text Kit 一些事

div 文字 而且 let cin 支持 res tutorial win

1. Text Kit 是什麽?

在iOS7中,蘋果引入了Text Kit——Text Kit是一個高速而又現代化的文字排版和渲染引擎。Text Kit在UIKit framework中的定義了一些類和相關協議,它最基本的作用就是為程序提供文字排版和渲染的功能。在程序中。通過Text Kit能夠對文字進行存儲(store)、布局(lay out)。以及用最精細的排版方式(比如文字間距、換行和對齊等)來顯示文本內容。蘋果引入Text Kit的目的並不是要代替已有的Core Text,Core Text的主要作用也是用於文字的排版和渲染中,它是一種先進而又處於底層技術,假設我們須要將文本內容直接渲染到圖形上下文(Graphics context)時,從性能和易用性來考慮。最佳方案就是使用Core Text。

而假設我們直接利用蘋果提供的一些控件(比如UITextView、UILabel和UITextField等)對文字進行排版,無疑就是借助於UIkit framework中Text Kit提供的API。

2. Text Kit 能幹什麽?

  • 對文字進行分頁或多列排版
  • 支持文字的換行、折疊和著色等處理
  • 能夠調整字與字之間的距離、行間距、文字大小、指定特定的字體
  • 支持富文本編輯,能夠自己定義文字截斷
  • 支持動態樣式
  • 支持凸版印刷效果(letterpress)
  • 圍繞路徑
  • 動態文本格式及存儲
  • 支持數據類型的檢測(比如鏈接、附件等)

具體參考:http://blog.jobbole.com/51965/

3. Text Kit 的架構 & 原理

以下,我們通過圖1(此圖來自WWDC2013 Session 210)來了解一下Text Kit的架構。圖1是基於iOS 7繪制的,從圖中,我們能夠看到Text Kit是基於Core Text構建的。它通過Core Text與Core Graphics進行交互。而UI控件(UILabel、UITextField和UITextView)則構建於Text Kit之上,可見這些文本控件能夠利用Text Kit提供的API來對文字進行排版和渲染處理。從圖中我們也能夠看到SDK提供的UIWebView是基於WebKit的,它不能使用Text Kit提供的功能。

技術分享圖1 Text Kit在iOS 7 SDK中的位置

我們再來看看圖1中的相關組件在iOS6裏面是怎樣相應的,如圖2所看到的,能夠看出在iOS 6中是沒有Text Kit,而且UILabel、UIText和UITextView是基於String Drawing和WebKit構建的。當中String Drawing是與Core Graphics直接通訊。

技術分享

圖2 在iOS 6中並沒有Text Kit

原理 & 實踐 牛人寫的已經非常多了,具體參考例如以下鏈接

破船出品

http://beyondvincent.com/blog/2013/11/12/121-brief-analysis-text-kit/

raywenderlich Tutorials(鏈接為中文)

http://www.raywenderlich.com/zh-hans/53890/text-kit-%E6%95%99%E7%A8%8B%EF%BC%88%E4%B8%80%EF%BC%89

http://www.raywenderlich.com/zh-hans/53889/text-kit-%E6%95%99%E7%A8%8B%EF%BC%88%E4%BA%8C%EF%BC%89



4. 相關代碼 && 進階資料

蘋果官方演示樣例:

  • IntroToTextKit

蘋果官方參考文檔:

  • Text Programming Guide for iOS.pdf
  • Core Text Programming Guide
  • NSLayoutManager Class Reference for iOS.pdf
  • NSLayoutManagerDelegate Protocol Reference for iOS.pdf
  • NSTextContainer Class Reference for iOS.pdf
  • NSTextStorage Class Reference for iOS.pdf
  • NSTextStorageDelegate Protocol Reference for iOS.pdf

wwdc視頻:

  • Introducing Text Kit
  • Advanced Text Layouts and Effects with Text Kit
  • Using Fonts with Text Kit




關於Text Kit 一些事