Telegram研究:头像获取流程
ChatListItemNode -> setupItem -> AvatarNode.setPeer -> AvatarNode.ContentNode.setPeer -> representation用户头像信息 PeerAvatar.peerAvatarImage -> peerAvatarImage -> peerAvatarImageData...
ChatListItemNode -> setupItem -> AvatarNode.setPeer -> AvatarNode.ContentNode.setPeer -> representation用户头像信息 PeerAvatar.peerAvatarImage -> peerAvatarImage -> peerAvatarImageData...
ChatListNodeEntries.swift ChatListNode.swift preparedChatListNodeViewTransition ChatListNodeViewTransitionInsertEntry ChatListNodeEntry -> ChatListNodeViewTransitionInsertEntry -> ListViewI...
包含关系 ChatListControllerImpl ChatListControllerNode ChatListContainerNode ChatListContainerItemNode ChatListNode.swift mappedInsertEntries mappedUpdateEntries 数据类型及UI 数据类 - UI类 ChatListEmptyHeader...
ChatMessageBubbleItemNode: ChatMessageItem: ListViewItemNode UI层级结 ChatMessageBubbleItemNode – ChatBubbleMainContainerNode — ContextExtractedContentContainingNode —- ContextExtractedContentView UI...
1、继承关系 ListView: ASDisplayNode 2、刷新 刷新:(类似UITableView.reloadData()) 但是这个需要传入删、增加、修改那些数据, self.transaction(deleteIndices: xxx, insertIndicesAndItems: xxx, updateIndicesAndItems: xxx, options: ....)...
数据转换过程 Postbox.Message → MessageHistoryEntry → ChatHistoryViewTransitionInsertEntry + ChatHistoryViewTransitionUpdateEntry → ChatMessageItemImpl (类似UITableView里的datasource)→ ListViewInsertItem + L...
前言 由于项目里部分三方库已经很久远,支持的模拟器版本不包arm64-simulator架构,导致直接在新电脑上运行模拟器直接启动不了 1、三方库信息如下: lipo -info /Users/xx/xxx/xxx.a Architectures in the fat file: /Users/xx/xxx/xxx.a are: armv7 armv7s i386 x86_64 a...
前言 由于Telegram的代码量太大,而且显示的几乎全是_ASDisplayView,很多node文件有4000~5000行代码,导致调试查看十分麻烦,AsyncDisplayKit的ASDisplayNode提供了设置自定义类的方法,可以在debug时方便定位问题 setViewBlock的优先级要高于viewClass 方案一、在ASDisplayNode子类里设置setVi...
前言 在上一篇里提到过,之前被telegram里源码编译成静态库的过程吓住了一直没研究,实际是BUILD里调用shell脚本,podspec里也有一样的功能,利用这些特性可以正常将BUILD迁移到podspec,具体内容在前一篇里有写,只是单独把编译源码的部分抽取出来 telegram里有不少库都是直接引入三方的源码,在使用bazel编译阶段,直接把源码编译成xxx.a的静态库 比如...
之前研究telegram通过bazel使用的库改成在自己项目里使用cocopod引入,已经过去了一年有余,当时花了很大的功夫还遇到很大问题,现在回头再次研究使用,配合Chatgpt自动生成改写,发现很快就改写完了,这过程相对比较顺利,不过也遇到了一些问题 1、文件后缀不对 问题: ```Fetching external sources -> Fetching podspec for...