iOS富文本组件的实现 – DTCoreText

目前越来越多的新闻订阅类app采用了自定义的富文本控件,比如Zaker,Flipboard等。

这样的富文本控件较之webView有更快的加载速度,以及更好的布局。

DTCoreTextView就是这样的富文本控件,该控件有如下特点:

- 通过HTML创建富文本,比UIWebView更加快速

- 支持图片,链接标签

- 支持HTML5 video 标签

- 支持列表,文本对齐标签

- 支持局部的CSS style

DTCoreText需要处理穿插在文字里的各类Attachment,并支持文字背景色,段缩进等CoreText不支持的属性,不能简单把NSAttributeString扔给CoreText渲染了事,需要做更细致的处理。DTCoreText分了几层,整体结构图:

最上层是使用者,可以是Controller,例如项目里示例的DemoTextViewController,也可以是某视图类。接着是DTCoreText封装好的各个控件,自带的有Label,TextView和Cell,这些控件的文字渲染都由DTAttributedTextContentView负责,非文字部分例如图片/视频等元素会在上层使用者那里通过delegate传给DTAttributedTextContentView。DTCoreTextLayouter / DTCoreTextLayoutFrame / DTCoreTextLayoutLine / DTCoreTextGlyphRun这四个类分别对应CoreText里的CTFramesetter / CTFrame / CTLine / CTRun,模仿了CoreText的模式,功能和作用一样,只是在它们基础上添加了功能。

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:iOS富文本组件的实现 – DTCoreText