mirror of
https://github.com/HackPlan/AsyncDisplayKit.git
synced 2026-04-10 22:42:21 +08:00
109 lines
4.9 KiB
HTML
109 lines
4.9 KiB
HTML
<!DOCTYPE html>
|
|
<html prefix="og: http://ogp.me/ns#">
|
|
<head>
|
|
<meta charset='utf-8'>
|
|
<title>AsyncDisplayKit | A React-inspired view framework for iOS</title>
|
|
<link rel='stylesheet' href='/static/main.css' type='text/css'/>
|
|
<link rel="stylesheet" href='/static/pygments.css' type='text/css'/>
|
|
<link rel='shortcut icon' href='/static/favicon.png'>
|
|
<meta name='viewport' content='width=480'>
|
|
<meta property="og:title" content="A React-inspired view framework for iOS" />
|
|
<meta property="og:site_name" content="AsyncDisplayKit">
|
|
<meta property='og:description' content='AsyncDisplayKit: A Library for Functional UI on iOS.'>
|
|
<meta property='og:image' content='http://asyncdisplaykit.org/static/asyncdisplaykit-og-image.png'>
|
|
<meta property='og:url' content="http://asyncdisplaykit.org/index.html">
|
|
<meta property='og:type' content='website'>
|
|
<script type="text/javascript" src="//use.typekit.net/vqa1hcx.js"></script>
|
|
<script type="text/javascript">{'try{Typekit.load();}catch(e){}'}</script>
|
|
</head>
|
|
<body>
|
|
|
|
<header class='topbar site-header'><nav class='width'>
|
|
<a class="site-title" href="/">AsyncDisplayKit</a>
|
|
<ul>
|
|
<li><a href="/docs/getting-started.html" >
|
|
docs
|
|
</a></li>
|
|
<li><a href="/appledocs.html" >api</a></li>
|
|
<li><a href="/resources.html" >resources</a></li>
|
|
<li><a href="http://github.com/facebook/AsyncDisplayKit">github</a>
|
|
</ul>
|
|
</nav></header>
|
|
|
|
|
|
|
|
|
|
<section class='content'>
|
|
<div class='width'>
|
|
<article>
|
|
|
|
<div class="page-content">
|
|
<div class="wrapper">
|
|
<div class="post">
|
|
<article class="post-content">
|
|
<p><img src="/static/logo.png" alt="logo"></p>
|
|
|
|
<p>AsyncDisplayKit is an iOS framework that keeps even the most complex user
|
|
interfaces smooth and responsive. It was originally built to make Facebook's
|
|
<a href="https://facebook.com/paper">Paper</a> possible, and goes hand-in-hand with
|
|
<a href="https://github.com/facebook/pop">pop</a>'s physics-based animations — but
|
|
it's just as powerful with UIKit Dynamics and conventional app designs.</p>
|
|
|
|
As the framework has grown, many features have been added that can save developers tons of time by eliminating common boilerplate style structures common in modern iOS apps.
|
|
|
|
If you've ever dealt with cell reuse bugs, tried to performantly preload data for a page or scroll style interface or even just tried to keep your app from dropping too many frames you can benefit from integrating ASDK.
|
|
|
|
<p><br /></p>
|
|
|
|
<h3>Quick start</h3>
|
|
|
|
<p>ASDK is available on <a href="http://cocoapods.org">CocoaPods</a>. Add the following to your Podfile:</p>
|
|
<div class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="n">pod</span> <span class="s1">'AsyncDisplayKit'</span>
|
|
</code></pre></div>
|
|
<p>(ASDK can also be used as a regular static library: Copy the project to your
|
|
codebase manually, adding <code>AsyncDisplayKit.xcodeproj</code> to your workspace. Add
|
|
<code>libAsyncDisplayKit.a</code>, AssetsLibrary, and Photos to the "Link Binary With
|
|
Libraries" build phase. Include <code>-lc++ -ObjC</code> in your project linker flags.)</p>
|
|
|
|
<p>Import the framework header, or create an <a href="https://developer.apple.com/library/ios/documentation/swift/conceptual/buildingcocoaapps/MixandMatch.html">Objective-C bridging
|
|
header</a>
|
|
if you're using Swift:</p>
|
|
<div class="highlight"><pre><code class="language-objective-c" data-lang="objective-c"><span class="cp">#import <AsyncDisplayKit/AsyncDisplayKit.h></span>
|
|
</code></pre></div>
|
|
<p>AsyncDisplayKit Nodes are a thread-safe abstraction layer over UIViews and
|
|
CALayers:</p>
|
|
|
|
<p><img src="/static/node-view-layer.png" alt="logo"></p>
|
|
|
|
You can access most view and layer properties when using nodes, the difference is that nodes are rendered concurrently by default, and measured and laid out asynchronously when used <a href = "/docs/automatic-layout.html">correctly</a>!
|
|
<br/>
|
|
<p>
|
|
To learn more, <a href = "/docs/getting-started.html">check out our docs!</a>
|
|
</p>
|
|
</article>
|
|
|
|
</div>
|
|
|
|
|
|
</article>
|
|
</div>
|
|
</section>
|
|
<footer class="copyright"-><div class='width'>
|
|
a Facebook & Instagram collaboration ♥
|
|
</div></footer>
|
|
|
|
<script src="/static/linkify.js"></script>
|
|
<script>
|
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
|
ga('create', 'UA-44373548-4', 'auto');
|
|
ga('send', 'pageview');
|
|
|
|
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");
|
|
</script>
|
|
</body>
|
|
</html>
|
|
|