Facebook开源《AsyncDisplayKit介绍》翻译

译:https://code.facebook.com/posts/721586784561674/introducing-asyncdisplaykit-for-smooth-and-responsive-apps-on-ios/

当你在滑动屏幕时是否遇到过卡顿?点了一下按钮,半天没反应。iOS以用户体验好而闻名,但是要做的好,特别是在前几代设备上,也是有些困难的。一些表现不出的app为了好的用户体验,采用了不同的方法来处理他们各自的问题。今天,FB开源了AsyncDisplayKit框架,她能够以一个全面、通用的方式,让您的程序流畅、反应灵敏,令界面操作起来,有如丝般顺滑的感觉。

案例
界面呈现功能–在主线程中,屏幕上绘图、响应各种触摸事件、运行各种负责的逻辑等,都可成为瓶颈。一个应用程序要保持每秒60帧的黄金标准,每次只能消耗几毫秒。但UIKit中UIImageView、UITextView的绘制就需要几十到几百毫秒。并且当主线程在解码图像或描绘文字时,是不能同时响应用户输入和滚动的。
既然UIKit的视图存在效率慢的问题,高性能的app会尝试其他的替代方法。不直接使用UIIMageView,采用Core Graphics在子线程解压图片;不直接使用UITextView,直接采用Core Text。这些方法有效,但有局限性,每个的解决方案需要区别单独处理,不能做到通用,无法从较高的层次提高应用程序行为。
AsyncDisplayKit是建立在UIKit、Core Animation上的通用解决方案,它的图像和文本视图不阻塞在主线程,提供了一个简单的解决方案。更重要的是,它支持异步创建和渲染复杂的视图。

Node介绍
AsyncDisplayKit的Node是线程安全的,是抽象的UIView、CALayer。
如果你知道如何使用UIView,你应该知道如何使用Node。ASImageNode和ASTextNode能够想UIkit组件那样使用。视图层级结构上,和UIKit不一样,Node层级是整个屏幕内容的初始化和布局都在后台线程,如此非常容易发挥多核优势。
Nodes有很多优点,比如,你可以用layer代替view来提供性能,但实现整个,比较复杂,要写很多代码。但Node就非常容易应对了。
node.layerBacked = YES;
如果事后,你又想从layer切回view,也只是一行代码的事情。这是很大的改进,不用再去担心layer的如何使用,你只管在不需要处理触摸操控时使用就好了。

开始
AsyncDisplayKit是强大的,可随时能集成到你的app中。最初创建它,是为了使Paper app有更好的用户体验而成为可能。如今它同样在动画及常规应用程序具有威力。我们等不及要看到你们将会用它来创造。

https://github.com/facebook/AsyncDisplayKit

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值