当前位置:首页 > 技术文章 > 正文内容

Facebook开源异步用户界面渲染库AsyncDisplayKit

zonemu1个月前 (09-04)技术文章21

虽然Facebook的iOS应用Paper未能大热,但许多开发者却视其为现代移动应用的榜样。

为了开发Paper,Facebook开发了大量私有库,而且Facebook开始慢慢将其中一些私有库开放给外部开发者。比如,Facebook在今年早些时候开源了Pop动画引擎,该引擎驱动了Paper的大部分用户界面;另外,Facebook还开源了给应用增加发光效果的Shimmer和其他两个为Paper开发的私有库。今天,Facebook又开源了AsyncDisplayKit库。

这个名字有点绕,但正是它让拥有许多复杂动画的Paper能以60帧每秒运行。AsyncDisplayKit库基本上可以直接用来取代一些苹果的技术。苹果用来显示文本和图像的UIKit视图通常需要几十到几百毫秒来渲染。这让渲染一些平滑动画变得很困难(有时候甚至不可能)。

随着时间推移,开发者们找到了一些绕过了这一瓶颈的变通方案,但正如Facebook所说的,这些“变通方案表现各异,很难进一步改善和预测应用表现”。

这就是开发AsyncDisplayKit库的原因。AsyncDisplayKit库基于苹果的技术搭建,但苹果的标准技术运行在应用的主线程中,用户输入需要等到主线程执行完毕才能进行,Facebook的解决方案不会阻塞主线程。

AsyncDisplayKit库与Pop动画引擎配合良好,但没有必要一定使用Pop。相反,Facebook表示:“它与UIKit Dynamics和传统的应用设计一样强大”。

AsyncDisplayKit库托管在GitHub上。(译:1thinc0)

Facebook Open Sources More Of The Tech Behind Its Paper App

相关文章

Vue3开发极简入门(14):组件间通信之props、ref&defineExpose

组件间的关系可以分为:父子关系。以前文的代码为例,最典型的就是App.vue与Car.vue这种,APP是父,Car是子。祖孙关系。如果Car再引入一个子组件,这个子组件与App就是祖孙关系。其他。比...

使用Java统计gitlab代码行数(统计github代码行数的方法)

使用Java统计gitlab代码行数一、背景:需要对当前公司所有的项目进行代码行数的统计二、 可实现方式1.脚本:通过git脚本将所有的项目拉下来并然后通过进行代码行数的统计样例:echo 创建项目对...

100行Html5+CSS3+JS代码实现元旦倒计时界面

一、前言2022年到了,祝大家虎年大吉喜气临,昂首摆尾迎春来。双眼圆睁看世界,万水千山尽开颜。胡须翘翘美姿态,人人开心祝平安。巨大身躯摇摆摆,坎坷困境当笑谈。愿你虎年万事顺,吉星高照旺旺旺!二、202...

全屋定制板材怎么选不出错?6 种板材深度对比,3 套方案闭眼选

装修选板材头疼吧?刚装完的柜子变形发霉,说好的环保结果甲醛超标,这种翻车现场见太多了。厨房卫生间千万别用密度板,这玩意儿遇水就膨胀,半年准完蛋。颗粒板性价比确实高,但小厂出的真心不敢用。环保等级至少得...

JavaScript中的数组(Array)方法你真的了解吗?

在过去的几个月,我发现我的拉取请求中存在四个完全相同的 JavaScript 错误。于是我写了这篇文章,总结了如何在 JavaScript 中正确使用地使用 Array 的方法!用 Array.inc...

解锁无限潜力,在没有数组溢出情况下,掌握Filter公式正确用法

嗨,朋友们!今天我要和大家分享一些关于Filter公式的知识,这将帮助你们解决没有数组溢出情况下的问题。你是否曾经在处理数据时遇到过没有数组溢出的情况?不用担心,因为我将教你一些正确使用Filter公...