基于Telegram二次开发 --- 学习 AsyncDisplayKit

前言

Telegram 项目中使用基于 Facebook 开源的 AsyncDisplayKit (以下简称 ASDK,目前已经停止维护,并于 2017 年迁移到新库,更名为 Texture ) + 部分自己基于 ASDK 定制的 Display 构建大部分UI;

image.png

image.png

根据 BUILD 文件,我们能清楚知道这两个包的结构,以及依赖关系;(不懂 BUILD 文件是啥?看这:基于Telegram二次开发 --- Bazel初探


1. AsyncDisplayKit 简介

ASDK(现名 Texture)是 FaceBook 开源的一款能够保持界面流畅的框架。建立在 UIKit 之上,可以保持最复杂的用户界面的流畅和响应;

ASDK 的作者是 Scott Goodson (Linkedin),他曾经在苹果工作,负责 iOS 的一些内置应用的开发,比如股票、计算器、地图、钟表、设置以及 Safari 等,当然他也参与了 UIKit framework 的开发。后来他加入 Facebook 后,负责 Paper 的开发,创建并开源了 AsyncDisplayKit;

2. AsyncDisplayKit 学习曲线

3. Telegram 与AsyncDisplayKit

Telegram 并没有将 AsyncDisplayKit 全盘接入,而是作为子模块接入,Telegram 剔除了很大一部分 AsyncDisplayKit 内容,根据自己需求最低限度的保留了核心 node ,然后自己重写了几百个 node 的子类,这些类散落在如 DisplayTelegramUIItemListUI 以及支持 Telegram UI 主要功能的其他子模块中。

image.png

如图所示:

  • 蓝色框:保留下来的代码。
  • 虚线框:已经删除或保留名字但内部实现已经被重写或以及某些只是为了方便将框架迁移进来却没有在项目中使用。

Telegram 保留了约 35% 的 AsyncDisplayKit 代码:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容