Reputation: 377
I just download Facebook Paper app for iOS. There's a lot of great stuff in this app, specifically animation wise. It runs smooth as butter for me too - some really great stuff going on behind the scenes evidently.
What I'd like to know is what libraries are used for which features of the app (3rd parties libraries used are listed below. There's a truckload of them). Basically, how did they get it looking and working as well as it does - which of these libraries can I use to do the same?
Since this is a pretty broad question, specifically I'd like to know about animations - fold, swipe down, tap on a settings section, tap an icon. Was a third party library used - how did Facebook achieve the smoothness and complexity of animations that are there?
All 3rd party libraries from Facebook paper are listed below.
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
Upvotes: 27
Views: 5517
Reputation: 9561
Facebook held an event in San Francisco on 1st April called "An Inside Look at Facebook Paper". See the section "Spring & Delight: Beyond Static Animations - Kimon Tsinteris".
In summary, for animations they used an in-house library called Pop that has now been open-sourced. It's benefits over CoreAnimation are 1) that it doesn't depend on CALayer... any object can be animated 2) animations can be stopped mid-flow, and a new one started with the end state of the animated object matching where it was stopped. You will notice that animations in Paper can all be interrupted.
At F8 Facebook announced they would be open sourcing the rendering library DisplayNode that allows a large amount of rendering to happen off the main thread. This was released as AsyncDisplayKit in October 2014.
Upvotes: 6
Reputation: 6028
Quote from an engineer working on paper:
The engineering complexity here is finding a way to fully utilize the multicore architecture of newer iPhones on top of the UIKit framework which has no support for multithreading. Significant work went into creating a framework for doing rendering work on multiple threads, and we spent a long time finding the balance between performance and complexity.
Full length article here: http://www.quora.com/Facebook-Launches-Paper-January-2014/What-was-it-like-to-help-develop-Paper/answer/Jason-Barrett-Prado?srid=iaDC&share=1
Upvotes: 10