28 | 怎么应对各种富文本表现需求?
戴铭
![](https://static001.geekbang.org/resource/image/17/c6/1775fcf9c83ffa0e40a9f276006d2bc6.jpg)
该思维导图由 AI 生成,仅供参考
你好,我是戴铭。今天,我要和你分享的主题是,在 iOS 开发中,如何展示富文本的内容。
在 iOS 开发中,富文本的展示是一个非常常见的需求。为了帮助你更好地了解如何展示富文本,我在今天这篇文章中,会结合一个项目来跟你说说面对富文本展示需求时,要怎么考虑和实现。这样,你在自己的项目中,也可以借鉴今天这样的实现思路和方法。
简单来说,富文本就是一段有属性的字符串,可以包含不同字体、不同字号、不同背景、不同颜色、不同字间距的文字,还可以设置段落、图文混排等等属性。
比如,RSS 阅读器中的某篇文章内容如下:
文章的 HTML 代码就在上面 RSS 中的 description 标签里。解析出 RSS 中所有文章的 HTML 代码,并将它们保存到本地数据库中。
接下来,如何展示 HTML 内容呢?当时,我的第一反应就是使用 WebView 控件来展示。
WebView
使用 WebView 显示文章只需要创建一个 UIWebView 对象,进行一些基本滚动相关的设置,然后读取 HTML 字符串就可以了,具体实现代码如下:
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
![](https://static001.geekbang.org/resource/image/d0/e4/d0880927e2a522a038be2d04bf19dfe4.png)
iOS开发中,展示富文本内容是常见需求。本文介绍了在iOS开发中应对各种富文本表现需求的方法。作者首先介绍了使用UIWebView来展示富文本内容,并通过缓存图片优化展示速度。其次,作者介绍了使用NSURLProtocol来缓存文章中的图片,并展示了如何使用STMURLCache进行图片预加载。文章还提到了YYText库,该库在异步文字布局和渲染上性能优异,适用于长列表场景下的富文本展示。YYText对富文本的图文混排使用自定义的NSMutableAttributedString分类,简化了NSMutableAttributedString的描述,还增加了功能,可以嵌入UIView和CALayer。相比原生代码描述富文本,HTML代码更易读、更容易维护。作者建议在列表展示富文本时使用TextKit或YYText,其他情况可以选择使用UIWebView。总的来说,本文通过具体的代码示例和技术原理,详细介绍了在iOS开发中展示富文本内容的多种方法和优化技巧。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《iOS 开发高手课》,新⼈⾸单¥59
《iOS 开发高手课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(15)
- 最新
- 精选
- 哈WKWebView不好实现这种效果吗?UIWebView已经被苹果淘汰了啊
作者回复: WKWebView 思路类似,使用WKURLSchemeHandler就行
2019-05-1415 - 熊wk的NSURLProtol支持不太好,用了网上的一些方案,会导致一些奇怪的问题…。很蛋疼。现在需求里面的ajax请求都不好去拦截
作者回复: wk 的话,可以了解下 -[WKWebViewConfiguration setURLSchemeHandler:forURLScheme:]
2019-05-204 - Ant同问为啥不用 WKWebView
作者回复: 可以用 WKWebView,思路类似,实现上用 WKURLSchemeHandler
2019-05-152 - Happy_Home老师,想问一下,你的那个阅读器项目貌似也导入了DTCoreText,可是整个项目中好像并没有运用到,DTCoreText好像也是可以直接将HTML字符串转化为富文本,是出于什么原因没有使用而选择UIWebView的呢2019-05-143
- AceYYKit的想法和方案确实不错,不过曾经在实践的时候,遇到某些不是很常见的语言里面的字符部分渲染不出来。。。不知道大家有没有遇到过,这个问题一直没有解决,后面就放弃使用YYkit了。2019-05-143
- Geek_e1d503能否有一堂苹果审核的课,梳理常见被拒原因?2019-05-152
- 谭鹏YYKit 里面的 封装runloop 和GCD的部分 非常好用2019-05-152
- xilie长列表 FPS 性能优化的问题,看到都 9102 年了,还好多文章介绍计算高度并缓存的方案,Self-Sizing 还没普及吗?大家都还手动算的吗?性能更好?2019-05-2921
- TristanNSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];2019-05-1521
- 帅气潇洒的豆子铭哥,github上STMURLCache的引用的文件有点多啊,需要全部使用?2019-05-141
收起评论