我只是为iOS下载Facebook Paper应用。这个应用中有很多很棒的东西,特别是动画明智的。对我来说,它也像黄油一样顺利运行 - 显然在幕后发生了一些非常棒的事情。
我想知道的是是用于应用程序功能的库(使用的第三方库如下所示。其中有一卡车)。基本上,他们是如何让它看起来和工作一样好 - 我可以使用哪些库来做同样的事情?
由于这是一个非常广泛的问题,特别是我想了解动画 - 折叠,向下滑动,点按设置部分,点按图标。是否使用了第三方库 - Facebook如何实现动画的平滑性和复杂性?
以下列出了Facebook论文中的所有第三方库。
ACE Appirater Reachability AQGridView bitvect Boost Breadcrumb breakpad Chromium CocoaHTTPServer CocoaLumberjack DCRoundSwitch DTCoreText EGODatabase expat FFT by Mark Oleson FFT by Takuya Ooura gh-kit gh-unit Google Toolbox for Mac google-web-toolkit gtest gyp IEEE 754r Half Precision floating... HPGrowingTextView InAppSettingsKit ios5-cookbook ios-8601-parser-unparser jqueryjs JSONKit leveldb LibComponentLogging-Core LibComponentLogging-NSLog libjingle libjpeg-turbo libjpeg libPhoneNumber-iOS libphonenumber libsrtp libvpx libyuv llvmreturn MAZeroingWeakRef minizip mizpanel-iphone mosquitto MessagePack Objective C Imple... MessagePack msinttypes OpenCV Tutorials nimbus NJKWebViewProgress unmodified objc4 ObjQREncoder OCHamcrest OCMock OCPDFGen OmniGroup OmniUI OpenSSL OpenUDID opus peertalk PhotoScroller PHP PLCrashReporter pmtk3 Pocket-ObjC-SDK portaudio protobuf PSTCollectionView SUtilities RestKit Ring Buffer Utility SDURLCache SDWebImage SOCKit SPDY-for-iPhone spdylay spreadsort ssziparchive TDOauth tiqr UAModalPanel webkit webp webrtc WebViewJavascriptBridge XMLReader yaml-cpp yasm zlib zxing
答案 0 :(得分:10)
引用纸上工程师的话:
这里的工程复杂性正在寻找一种充分利用它的方法 在UIKit框架之上的更新iPhone的多核架构 它不支持多线程。重要的工作进入了 创建一个框架,用于在多个线程上进行渲染工作,以及 我们花了很长时间才找到性能和性能之间的平衡 复杂性。
答案 1 :(得分:6)
Facebook于4月1日在旧金山举办了一场名为"An Inside Look at Facebook Paper"的活动。请参阅“Spring& Delight:超越静态动画 - Kimon Tsinteris”部分。
总之,对于动画,他们使用了一个名为Pop的内部库,该库现已开源。它比CoreAnimation更有优势1)它不依赖于CALayer ...任何对象都可以被动画2)动画可以在流动中停止,而新动画开始时动画对象的结束状态匹配它所在的位置停止。您会注意到Paper中的动画都可以被中断。
在F8 Facebook announced,他们将开放渲染渲染库DisplayNode,允许大量渲染发生在主线程之外。这是在2014年10月以AsyncDisplayKit发布的。