iOS 开发高手课
戴铭
前滴滴出行技术专家
42934 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
用户故事 (1讲)
iOS 开发高手课
15
15
1.0x
00:00/00:00
登录|注册

21 | 除了 Cocoa,iOS还可以用哪些 GUI 框架开发?

课后作业
小结
Texture 里 Node 的异步绘制
渲染流程
GUI 框架里都有什么?
Texture (AsyncDisplayKit)
Flutter
WebKit
目前流行的 GUI 框架
iOS GUI 框架开发

该思维导图由 AI 生成,仅供参考

你好,我是戴铭。
在专栏的第 2 篇文章“App 启动速度怎么做优化与监控?”中,我和你分享了如何实现方法级别的启动优化,从而实现整个 App 启动速度的优化。
通过这篇文章的内容你会发现,把可以优化方法的工作都处理完之后,比如主线程上的大量计算、IO 操作、懒加载(也叫作延时加载,即当对象需要用到的时候再去加载),就只剩下了 GUI(Graphical User Interface 图形用户界面) 相关的方法。
在 iOS 开发时,默认使用的都是系统自带的 Cocoa Touch 框架,所以如果你还想进一步提高界面响应速度,赶超其他使用 Cocoa Touch 框架的 App 用户体验时,就要考虑使用其他的 GUI 框架来优化 App 界面的响应速度了。
接下来,我们就一起聊聊除了 Cocoa Touch 框架外,还有哪些 GUI 框架可以用来做 iOS 开发。

目前流行的 GUI 框架

现在流行的 GUI 框架除了 Cocoa Touch 外,还有 WebKit、Flutter、Texture(原名 AsyncDisplayKit)、Blink、Android GUI 等。其中,WebKit、Flutter、Texture 可以用于 iOS 开发。接下来,我就和你说说这三款 GUI 框架。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

iOS开发中,除了使用Cocoa Touch框架外,还可以利用其他GUI框架进行界面优化。目前流行的GUI框架包括WebKit、Flutter和Texture。其中,Texture框架在性能上表现出色,尤其在用户交互体验方面有显著提升。相比于Cocoa Touch框架,Texture的学习成本较低,且性能先进,因此对于iOS开发者来说,转向Texture框架是一个值得考虑的选择。 文章详细介绍了GUI框架的基本单元、渲染流程以及各框架的特点和优势。其中,Texture最大的优势在于开发了线程安全的ASDisplayNode,能够很好地和UIView共生,实现不在主线程执行视图的布局绘制和层级计算,充分发挥多核CPU的优势。ASDisplayNode替代了UIView和CALayer的delegate,解耦了二者,并将它们包装成ASDisplayView和ASDisplayLayer供外部使用。此外,ASDisplayNode还实现了异步绘制,通过ASAsyncTransaction进行调度,进一步提升了性能。 总的来说,选择GUI框架时,渲染方面的区别并不大,而且渲染技术相对比较成熟。因此,在框架的易用性和与现有工程的兼容性上需要更多考虑。如果想提高App的使用体验,让界面操作更流畅,推荐使用Texture。Texture易用性和兼容性良好,学习成本与收益比也是最高的,代码质量也很高,值得学习。 整体而言,本文通过介绍GUI框架的特点和优势,为读者提供了全面的了解和选择参考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《iOS 开发高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(17)

  • 最新
  • 精选
  • 贰零壹玖
    texture只是一层封装吧,渲染还是原生没变

    作者回复: 没错

    2019-04-27
    4
  • dreamCloud
    报告老师, 作业做好了: https://github.com/yunyyyun/FastTableTest 但是有写问题, 写在README.md里面了, 慢慢解决中, 同时欢迎同班同学们帮忙看看

    作者回复: 没有用 Texture 呢

    2019-05-24
    2
  • FlexBox布局是H5的布局方式吧…可惜的是Xcode对这种布局方式没有自动补全…

    作者回复: FlexBox 可以使用第三方库 Yoga

    2019-04-28
    2
  • 艾斯伊文คิดถึง
    webkit,rn,flutter启动速度比原生快么?还是需要在一定条件下?

    作者回复: 没有

    2019-04-27
    2
    2
  • dreamCloud
    reply to 作者:ViewController1 里面有用 ASTableNode 和 ASCellNode 做 list

    作者回复: 看到了👍🏻

    2019-05-26
    1
  • 赶紧学起来
    Texture原理挺好,不好推广使用啊 1、如果用Texture,跟RAC结合使用,有些方法不支持啊,比如ASButtonNode不支持rac_signalForControlEvents: 2、如果用Texture,ASButtonNode也不支持Masonry方法调用

    作者回复: RAC 的支持可以自己添加的。使用了 Texture 就不要用 Masonry 了吧,都是用来布局的。

    2019-05-22
    1
  • 亡命之徒
    想请教下老师,第三步为什么要向上寻找属性

    作者回复: 不是找属性,是找 Layer,将 block 加入对应 Layer 的队列里执行

    2019-06-25
  • Geek_45fc02
    好奇Apple为什么不借鉴一下Texture的思想,既不会大动目前的UI框架,也能极大提升UI的渲染性能。
    2019-05-21
    2
    3
  • jcy
    尝试回答一下 ASAsyncTransaction 是如何调度 displayBlock 的: 首先找到当前 ASDisplayNode 的 layer 对象的顶层 layer,并获取其 asyncdisplaykit_asyncTransaction 属性,然后把 displayBlock 放入内部一个指定优先级的 list 的尾部,然后内部会按照优先级高低依次调度(每个优先级有一个 list,同一优先级的从 list 头开始调度)
    2023-03-19归属地:北京
    1
  • Geek_ae7466
    为什么说Webkit不适用于安卓系统呢?
    2019-09-30
    1
收起评论
显示
设置
留言
17
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部