《iOS开发进阶》第17章:基于CoreText的排版引擎

使用CoreText技术,我们可以对富文本进行复杂的排版。经过一些简单的扩展,我们还可以实现对图片、链接的点击效果。CoreText技术相对于UIWebView,有内存占用少,以及可以在后台渲染的优点,非常适合排版工作。

 

1、CoreText简介

CoreText是用于处理文字和字体的底层技术。它直接和Core Graphics打交道。Quartz能够直接处理字体和字形,将文字渲染到界面上,它是基础库中唯一能够处理字形的模块。

UIWebView也是处理复杂的文字排版的备选方案,对于排版,基于CoreText和基于UIWebView相比,具有不同之处:

  • CoreText占用的内存更少,渲染速度更快,UIWebView占用的内存多,渲染速度慢。
  • CoreText在渲染界面前就可以精准地获得显示内容的高度,而UIWebView只有渲染出内容后,才能获得内容的高度。
  • CoreText的CTFrame可以在后台线程渲染,UIWebView的内容只能在主线程渲染。
  • 基于CoreText可以做更好的原生交互效果,交互效果可以更细腻。而UIWebView得交互效果都是用JS来实现的,在交互效果上会有一些卡顿情况存在。

CoreText的劣势:

  • CoreText渲染出来的内容不能像UIWebView那样方便地支付内容的复制。
  • 基于CoreText来排版需要自己处理很多复杂逻辑,例如需要自己处理图片与文字混排相关的逻辑,也需要自己实现链接点击操作的支持。

2、基于CoreText的基础排版引擎

不带图片的排版引擎

支持图文混排的排版引擎

第2部分的内容较多,主要对具体的应用步骤和代码进行了讲解,大家可以自己阅读。

 

本文来自Awnlab.com麦芒实验室,转载请注明出处,谢谢合作。