CoreText基本使用

CoreText 是用于處理文字和字體的底層技術(shù)。它直接和 Core Graphics(又被稱為 Quartz)打交道。Quartz 是一個(gè) 2D 圖形渲染引擎,能夠處理 OSX 和 iOS 中的圖形顯示。

Quartz 能夠直接處理字體(font)和字形(glyphs),將文字渲染到界面上,它是基礎(chǔ)庫(kù)中唯一能夠處理字形的模塊。因此,CoreText 為了排版,需要將顯示的文本內(nèi)容、位置、字體、字形直接傳遞給 Quartz。相比其它 UI 組件,由于 CoreText 直接和 Quartz 來(lái)交互,所以它具有高速的排版效果。

UIWebView 也是處理復(fù)雜的文字排版的備選方案。對(duì)于排版,基于 CoreText 和基于 UIWebView 相比,前者有以下好處:

CoreText 占用的內(nèi)存更少,渲染速度快,UIWebView 占用的內(nèi)存更多,渲染速度慢。

CoreText 在渲染界面前就可以精確地獲得顯示內(nèi)容的高度(只要有了 CTFrame 即可),而 UIWebView 只有渲染出內(nèi)容后,才能獲得內(nèi)容的高度(而且還需要用 javascript 代碼來(lái)獲取)

CoreText 的 CTFrame 可以在后臺(tái)線程渲染,UIWebView 的內(nèi)容只能在主線程(UI 線程)渲染。

基于 CoreText 可以做更好的原生交互效果,交互效果可以更細(xì)膩。而 UIWebView 的交互效果都是用 javascript 來(lái)實(shí)現(xiàn)的,在交互效果上會(huì)有一些卡頓存在。例如,在 UIWebView 下,一個(gè)簡(jiǎn)單的按鈕按下效果,都無(wú)法做到原生按鈕的即時(shí)和細(xì)膩的按下效果。

當(dāng)然,基于 CoreText 的排版方案也有一些劣勢(shì):

CoreText 渲染出來(lái)的內(nèi)容不能像 UIWebView 那樣方便地支持內(nèi)容的復(fù)制。

基于 CoreText 來(lái)排版需要自己處理很多復(fù)雜邏輯,例如需要自己處理圖片與文字混排相關(guān)的邏輯,也需要自己實(shí)現(xiàn)鏈接點(diǎn)擊操作的支持。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • CoreText簡(jiǎn)介(復(fù)制一段話吧): CoreText是用于處理文字和字體的底層技術(shù)。它直接和Core Grap...
    初光夫閱讀 774評(píng)論 0 49
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,188評(píng)論 4 61
  • iOS沒(méi)有現(xiàn)成的支持圖文混排的控件,而要用多個(gè)基礎(chǔ)控件組合拼成圖文混排這樣復(fù)雜的排版,是件很苦逼的事情。對(duì)此的解決...
    清風(fēng)沐沐閱讀 680評(píng)論 0 2
  • 處暑(8月23日),是二十四節(jié)氣之中的第14個(gè)節(jié)氣,此時(shí)太陽(yáng)到達(dá)黃經(jīng)150°。處暑的到來(lái)意味著進(jìn)入干支歷申月的下半...
    若拙文化閱讀 321評(píng)論 0 0
  • 做想做的事,去想去的地方,幫助能幫助的人!
    汪安安閱讀 183評(píng)論 0 0