From 4244414f5fba1ec94fd4456198cce8c196d420b2 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 13:33:44 -0700
Subject: [PATCH 01/28] Update nav_docs.yml
adding Installation section
---
_data/nav_docs.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/_data/nav_docs.yml b/_data/nav_docs.yml
index b5487c91..72bea33c 100755
--- a/_data/nav_docs.yml
+++ b/_data/nav_docs.yml
@@ -1,5 +1,6 @@
- title: Quick Start
items:
+ - installation
- getting-started
- title: Core Concepts
items:
From 92b4d983b228cb9922184f2fd1ad480f7dcc75df Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 13:58:05 -0700
Subject: [PATCH 02/28] Create installation.md
Moving this out of the main page so that we can highlight the advanced developer tools there instead.
Could someone check the Carthage section? I've never used Carthage before, but I found the directions here: https://medium.com/@thedan84/cocoapods-vs-carthage-675633e89c3e#.rm6rvd1jj
---
_docs/installation.md | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
create mode 100644 _docs/installation.md
diff --git a/_docs/installation.md b/_docs/installation.md
new file mode 100644
index 00000000..4e584e4d
--- /dev/null
+++ b/_docs/installation.md
@@ -0,0 +1,35 @@
+---
+title: Installation
+layout: docs
+permalink: /docs/installation.html
+next: quick-start.html
+---
+
+###CocoaPods
+
+ ASDK is available on CocoaPods. Add the following to your Podfile:
+
+ ```objective-c
+pod 'AsyncDisplayKit'
+```
+
+ASDK can also be used as a regular static library:
+
+Copy the project to your codebase manually, adding `AsyncDisplayKit.xcodeproj` to your workspace. Add `libAsyncDisplayKit.a`, AssetsLibrary, and Photos to the "Link Binary With Libraries" build phase. Include `-lc++ -ObjC` in your project linker flags.
+
+Import the framework header, or create an Objective-C bridging header if you're using **Swift**:
+
+ ```objective-c
+#import
+```
+
+###Carthage
+
+ASDK is available through Carthage. Add the following to your Cartfile:
+
+ ```objective-c
+github "facebook/AsyncDisplayKit"
+```
+Run ‘carthage update’ in Terminal and to fetch and build the ASDK library. This will create a folder named Carthage in your app’s root folder. In that folder there will be a ‘Build’ folder from where you have to drag the frameworks you want to use into the “Linked Frameworks and Libraries” section in Xcode.
+
+Learn more about Carthage.
From ffc0f7e4d24f27c80975a17a5b18f140be547047 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 13:59:45 -0700
Subject: [PATCH 03/28] Update index.md
moving installation instructions to the docs
---
index.md | 15 ---------------
1 file changed, 15 deletions(-)
diff --git a/index.md b/index.md
index 8b1340b6..22c5cb36 100755
--- a/index.md
+++ b/index.md
@@ -22,21 +22,6 @@ id: home
- Quick start
-
- ASDK is available on CocoaPods. Add the following to your Podfile:
-
- (ASDK can also be used as a regular static library: Copy the project to your
- codebase manually, adding AsyncDisplayKit.xcodeproj to your workspace. Add
- libAsyncDisplayKit.a, AssetsLibrary, and Photos to the "Link Binary With
- Libraries" build phase. Include -lc++ -ObjC in your project linker flags.)
-
- Import the framework header, or create an Objective-C bridging
- header
- if you're using Swift:
- #import <AsyncDisplayKit/AsyncDisplayKit.h>
-
AsyncDisplayKit Nodes are a thread-safe abstraction layer over UIViews and
CALayers:
From 51af943b8389cc2a446c69106759634eb0339fe9 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 14:09:02 -0700
Subject: [PATCH 04/28] Update nav_docs.yml
adding philosophy section
---
_data/nav_docs.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/_data/nav_docs.yml b/_data/nav_docs.yml
index 72bea33c..5eda9ee9 100755
--- a/_data/nav_docs.yml
+++ b/_data/nav_docs.yml
@@ -1,5 +1,6 @@
- title: Quick Start
items:
+ - philosophy
- installation
- getting-started
- title: Core Concepts
From c97f0ece8089bafa1b10229889de0bda8e8ee8de Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 14:19:49 -0700
Subject: [PATCH 05/28] Update index.md
moving node diagram and description to Philosophy page in docs
---
index.md | 12 +-----------
1 file changed, 1 insertion(+), 11 deletions(-)
diff --git a/index.md b/index.md
index 22c5cb36..2002fba1 100755
--- a/index.md
+++ b/index.md
@@ -16,18 +16,8 @@ id: home
pop's physics-based animations — but
it's just as powerful with UIKit Dynamics and conventional app designs.
- 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.
+ 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.
- 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.
-
-
-
- AsyncDisplayKit Nodes are a thread-safe abstraction layer over UIViews and
- CALayers:
-
- 
-
- 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 correctly!
To learn more, check out our docs!
From 99aead64b845693dba3c567e88bfd5833bee3d95 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 14:36:59 -0700
Subject: [PATCH 06/28] Create philosophy.md
@lappp9 - is it ok to include lines from your tutorial here? If not, I can change this.
wip
---
_docs/philosophy.md | 46 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
create mode 100644 _docs/philosophy.md
diff --git a/_docs/philosophy.md b/_docs/philosophy.md
new file mode 100644
index 00000000..d67fb2b6
--- /dev/null
+++ b/_docs/philosophy.md
@@ -0,0 +1,46 @@
+---
+title: Philosophy
+layout: docs
+permalink: /docs/philosophy.html
+next: installation.html
+---
+
+#Asynchronous Performance Gains
+
+AsyncDisplayKit is a UI framework that was originally born from Facebook’s Paper app. It came as an answer to one of the core questions the Paper team faced. **How can you keep the main thread as clear as possible?**
+
+Nowadays, many apps have a user experience that relies heavily upon continuous gestures and physics based animations. At the very least, your UI is probably dependent on some form of scroll view. These types of user interfaces depend entirely on the main thread and are extremely sensitive to main thread stalls. **A clogged main thread means dropped frames and an unpleasant user experience.**
+
+AsyncDisplayKit Nodes are a thread-safe abstraction layer over UIViews and CALayers:
+
+
+
+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 correctly!
+
+Too see asynchronous performance gains in action, check out the `examples/ASDKgram` app which compares a UIKit-implemented social media feed with an ASDK-implemented social media feed!
+
+On an iPhone 6+, the performance may not be radically different, but on a 4S, the difference is dramatic! Which leads us to ASDK's next priority...
+
+#A Great App Experience for All Users
+
+ASDK's performance gains allow you to easily design an great experience for every app user - across all devices, on all network connections.
+
+##A Great Developer Experience
+
+ASDK also strives to make the developer experience great:
+- platform compatability: iOS & tvOS
+- language compatability: Objective-C & Swift
+- requires fewer lines of code to build advanced apps (see `examples/ASDKgram` for a direct comparison of UIKit-implemented app vs. ASDK-implemented app)
+- cleaner architecture patterns
+- robust code (some really brilliant minds have worked on this for 3+ years)
+
+#Advanced Developer Tools
+
+As ASDK has grown, some of the brightest iOS engineers have contributed advanced technologies that will enable you, as a developer using ASDK, to save yourself development time.
+
+###Advanced Technology
+- ASRunLoopQueue
+- ASRangeController with Intelligent Preloading
+
+###Network Code Savings
+- automatic batch fetching (e.g. JSON payloads)
From 7ecc4c7da890f8ea124418e0307cdcb10aef74fc Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:10:09 -0700
Subject: [PATCH 07/28] Update philosophy.md
semicolon causing bullet issue?
---
_docs/philosophy.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_docs/philosophy.md b/_docs/philosophy.md
index d67fb2b6..8db55266 100644
--- a/_docs/philosophy.md
+++ b/_docs/philosophy.md
@@ -27,7 +27,7 @@ ASDK's performance gains allow you to easily design an great experience for ever
##A Great Developer Experience
-ASDK also strives to make the developer experience great:
+ASDK also strives to make the developer experience great
- platform compatability: iOS & tvOS
- language compatability: Objective-C & Swift
- requires fewer lines of code to build advanced apps (see `examples/ASDKgram` for a direct comparison of UIKit-implemented app vs. ASDK-implemented app)
From 2a92a825d04085a36195017efcc1f93f78914562 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:20:36 -0700
Subject: [PATCH 08/28] Update nav_docs.yml
adding layout-options
---
_data/nav_docs.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/_data/nav_docs.yml b/_data/nav_docs.yml
index 5eda9ee9..068fe30d 100755
--- a/_data/nav_docs.yml
+++ b/_data/nav_docs.yml
@@ -41,6 +41,7 @@
- static-layout-spec
- title: Optimizations
items:
+ - layout-options
- layer-backing
- synchronous-concurrency
- subtree-rasterization
From 99e2f879c9fd17e48e5780c9cd955f06e0286a17 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:35:45 -0700
Subject: [PATCH 09/28] Create layout-options.md
---
_docs/layout-options.md | 48 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
create mode 100644 _docs/layout-options.md
diff --git a/_docs/layout-options.md b/_docs/layout-options.md
new file mode 100644
index 00000000..67b7e068
--- /dev/null
+++ b/_docs/layout-options.md
@@ -0,0 +1,48 @@
+---
+title: Layout Options
+layout: docs
+permalink: /docs/layout-options.html
+---
+
+When using ASDK, you have three options for layout. Note that Autolayout is **not** supported by ASDK.
+
+#Manual Sizing & Layout
+
+This original layout method shipped with ASDK 1.0 and is analogous to UIKit's layout methods. Use this method for for ASViewControllers (unless you subclass the node).
+
+`[ASDisplayNode calculateSizeThatFits:]` **vs.** `[UIView sizeThatFits:]`
+`[ASDisplayNode layout]` **vs.** `[UIView layoutSubviews]`
+
+###Advantages (over UIKit)
+- Eliminates all main thread layout cost
+- Results are cached
+
+###Shortcomings (same as UIKit):
+- Code duplication between methods
+- Logic is not reusable
+
+#Unified Sizing & Layout
+
+This layout method does not have a UIKit analog. It is implemented by calling
+
+`- (ASLayout *)calculateLayoutThatFits: (ASSizeRange)constraint`
+
+###Advantages
+- zero duplication
+- still async, still cached
+###Shortcomings
+- logic is not reusable, and is still manual
+
+## Automatic, Extensible Layout
+
+This is the reccomended layout method. It does not have a UIKit analog and is implemented by calling
+`- (ASLayoutSpec *)layoutSpecThatFits:(ASSizeRange)constraint`
+###Advantages
+- can reuse even complex, custom layouts
+- built-in specs provide automatic layout
+- combine to compose new layouts easily
+- still async, cached, and zero duplication
+
+The diagram below shows how options #2 and #3 above both result in an ASLayout, except that in option #3, the ASLayout is produced automatically by the ASLayoutSpec.
+
+
From 7f6efa15de4f9460e8722f295c009fd2baf27087 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:37:56 -0700
Subject: [PATCH 10/28] Update nav_docs.yml
---
_data/nav_docs.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_data/nav_docs.yml b/_data/nav_docs.yml
index 068fe30d..e47642be 100755
--- a/_data/nav_docs.yml
+++ b/_data/nav_docs.yml
@@ -30,6 +30,7 @@
- scroll-node
- title: Layout Engine
items:
+ - layout-options
- layout-basics
- layout-spec
- stack-layout-spec
@@ -41,7 +42,6 @@
- static-layout-spec
- title: Optimizations
items:
- - layout-options
- layer-backing
- synchronous-concurrency
- subtree-rasterization
From 5e974348b41ad6d970debabfe4e9ab41bc2a7e7b Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:38:54 -0700
Subject: [PATCH 11/28] Update layout-options.md
---
_docs/layout-options.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_docs/layout-options.md b/_docs/layout-options.md
index 67b7e068..974a9ae9 100644
--- a/_docs/layout-options.md
+++ b/_docs/layout-options.md
@@ -33,7 +33,7 @@ This layout method does not have a UIKit analog. It is implemented by calling
###Shortcomings
- logic is not reusable, and is still manual
-## Automatic, Extensible Layout
+# Automatic, Extensible Layout
This is the reccomended layout method. It does not have a UIKit analog and is implemented by calling
`- (ASLayoutSpec *)layoutSpecThatFits:(ASSizeRange)constraint`
From 52fb8ef832be6a85715b8e83b70b4cd74216fbd2 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:41:19 -0700
Subject: [PATCH 12/28] Update nav_docs.yml
---
_data/nav_docs.yml | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/_data/nav_docs.yml b/_data/nav_docs.yml
index e47642be..c8579a26 100755
--- a/_data/nav_docs.yml
+++ b/_data/nav_docs.yml
@@ -31,15 +31,10 @@
- title: Layout Engine
items:
- layout-options
- - layout-basics
- - layout-spec
- - stack-layout-spec
- - inset-layout-spec
- - background-layout-spec
- - center-layout-spec
- - overlay-layout-spec
- - relative-layout-spec
- - static-layout-spec
+ - automatic-layout-basics
+ - automatic-layout-containers
+ - automatic-layout-examples
+ - automatic-layout-debugging
- title: Optimizations
items:
- layer-backing
From ac27f7ce2f5c18b12795f1f6f329f9288713c67b Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:41:56 -0700
Subject: [PATCH 13/28] Update and rename layout-basics.md to
automatic-layout-basics.md
---
_docs/{layout-basics.md => automatic-layout-basics.md} | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename _docs/{layout-basics.md => automatic-layout-basics.md} (98%)
diff --git a/_docs/layout-basics.md b/_docs/automatic-layout-basics.md
similarity index 98%
rename from _docs/layout-basics.md
rename to _docs/automatic-layout-basics.md
index eb712036..932094f9 100644
--- a/_docs/layout-basics.md
+++ b/_docs/automatic-layout-basics.md
@@ -1,7 +1,7 @@
---
-title: Layout Basics
+title: Automatic Layout Basics
layout: docs
-permalink: /docs/layout-basics.html
+permalink: /docs/automatic-layout-basics.html
---
##Box Model Layout
From 1e08c1d2661319e2f144a67992e127e3aadabc84 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:42:59 -0700
Subject: [PATCH 14/28] Update and rename layout-specs.md to
automatic-layout-containers.md
---
_docs/{layout-specs.md => automatic-layout-containers.md} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename _docs/{layout-specs.md => automatic-layout-containers.md} (61%)
diff --git a/_docs/layout-specs.md b/_docs/automatic-layout-containers.md
similarity index 61%
rename from _docs/layout-specs.md
rename to _docs/automatic-layout-containers.md
index 8b510b3b..70b3c587 100644
--- a/_docs/layout-specs.md
+++ b/_docs/automatic-layout-containers.md
@@ -1,5 +1,5 @@
---
-title: Layout Specs
+title: Automatic Layout Containers
layout: docs
permalink: /docs/layout-specs.html
---
From 81e50582669856988c6f8eb9acf4e81b4be1ea35 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:43:43 -0700
Subject: [PATCH 15/28] Update and rename center-layout-spec.md to
automatic-layout-examples.md
---
_docs/{center-layout-spec.md => automatic-layout-examples.md} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename _docs/{center-layout-spec.md => automatic-layout-examples.md} (65%)
diff --git a/_docs/center-layout-spec.md b/_docs/automatic-layout-examples.md
similarity index 65%
rename from _docs/center-layout-spec.md
rename to _docs/automatic-layout-examples.md
index 3dba3b62..a8ebd370 100755
--- a/_docs/center-layout-spec.md
+++ b/_docs/automatic-layout-examples.md
@@ -1,5 +1,5 @@
---
-title: ASCenterLayoutSpec
+title: Automatic Layout Examples
layout: docs
permalink: /docs/center-layout-spec.html
---
From f87767faefd118c3fea08d55cc3086fe6d398eb6 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:44:16 -0700
Subject: [PATCH 16/28] Update and rename stack-layout-spec.md to
automatic-layout-debugging.md
---
_docs/{stack-layout-spec.md => automatic-layout-debugging.md} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename _docs/{stack-layout-spec.md => automatic-layout-debugging.md} (64%)
diff --git a/_docs/stack-layout-spec.md b/_docs/automatic-layout-debugging.md
similarity index 64%
rename from _docs/stack-layout-spec.md
rename to _docs/automatic-layout-debugging.md
index df0e0df5..cc524530 100755
--- a/_docs/stack-layout-spec.md
+++ b/_docs/automatic-layout-debugging.md
@@ -1,5 +1,5 @@
---
-title: ASStackLayoutSpec
+title: Automatic Layout Debugging
layout: docs
permalink: /docs/stack-layout-spec.html
---
From 49b45c0fb93822517c723bdb9af33498fda239a3 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:46:24 -0700
Subject: [PATCH 17/28] Update automatic-layout-containers.md
---
_docs/automatic-layout-containers.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_docs/automatic-layout-containers.md b/_docs/automatic-layout-containers.md
index 70b3c587..b2f4074c 100644
--- a/_docs/automatic-layout-containers.md
+++ b/_docs/automatic-layout-containers.md
@@ -1,6 +1,6 @@
---
title: Automatic Layout Containers
layout: docs
-permalink: /docs/layout-specs.html
+permalink: /docs/automatic-layout-containers.html
---
From 79c60d8419ede2c8b6ad7133f41de06d9d08f8f0 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:46:40 -0700
Subject: [PATCH 18/28] Update automatic-layout-debugging.md
---
_docs/automatic-layout-debugging.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_docs/automatic-layout-debugging.md b/_docs/automatic-layout-debugging.md
index cc524530..3dc17845 100755
--- a/_docs/automatic-layout-debugging.md
+++ b/_docs/automatic-layout-debugging.md
@@ -1,5 +1,5 @@
---
title: Automatic Layout Debugging
layout: docs
-permalink: /docs/stack-layout-spec.html
+permalink: /docs/automatic-layout-debugging.html
---
From 88d9944f52a132b7ce3a58ed6bc5a404b57481a0 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:46:56 -0700
Subject: [PATCH 19/28] Update automatic-layout-examples.md
---
_docs/automatic-layout-examples.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_docs/automatic-layout-examples.md b/_docs/automatic-layout-examples.md
index a8ebd370..f46bfdb5 100755
--- a/_docs/automatic-layout-examples.md
+++ b/_docs/automatic-layout-examples.md
@@ -1,6 +1,6 @@
---
title: Automatic Layout Examples
layout: docs
-permalink: /docs/center-layout-spec.html
+permalink: /docs/automatic-layout-examples.html
---
From 299b972197acbc7ca030d94dc369a0875dadeeaf Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:54:03 -0700
Subject: [PATCH 20/28] Update layout-options.md
---
_docs/layout-options.md | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/_docs/layout-options.md b/_docs/layout-options.md
index 974a9ae9..51aeb844 100644
--- a/_docs/layout-options.md
+++ b/_docs/layout-options.md
@@ -4,13 +4,13 @@ layout: docs
permalink: /docs/layout-options.html
---
-When using ASDK, you have three options for layout. Note that Autolayout is **not** supported by ASDK.
-
+When using ASDK, you have three options for layout. Note that UIKit Autolayout is **not** supported by ASDK.
#Manual Sizing & Layout
This original layout method shipped with ASDK 1.0 and is analogous to UIKit's layout methods. Use this method for for ASViewControllers (unless you subclass the node).
`[ASDisplayNode calculateSizeThatFits:]` **vs.** `[UIView sizeThatFits:]`
+
`[ASDisplayNode layout]` **vs.** `[UIView layoutSubviews]`
###Advantages (over UIKit)
@@ -30,12 +30,14 @@ This layout method does not have a UIKit analog. It is implemented by calling
###Advantages
- zero duplication
- still async, still cached
+
###Shortcomings
- logic is not reusable, and is still manual
# Automatic, Extensible Layout
This is the reccomended layout method. It does not have a UIKit analog and is implemented by calling
+
`- (ASLayoutSpec *)layoutSpecThatFits:(ASSizeRange)constraint`
###Advantages
- can reuse even complex, custom layouts
From 3a09d15497369d613284e51402bb3afe3e20157e Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:57:34 -0700
Subject: [PATCH 21/28] Update automatic-layout-basics.md
---
_docs/automatic-layout-basics.md | 24 ------------------------
1 file changed, 24 deletions(-)
diff --git a/_docs/automatic-layout-basics.md b/_docs/automatic-layout-basics.md
index 932094f9..9170aaf8 100644
--- a/_docs/automatic-layout-basics.md
+++ b/_docs/automatic-layout-basics.md
@@ -28,31 +28,7 @@ Every ASLayoutSpec must act on at least one child. The ASLayoutSpec has the resp
You don’t need to be aware of **`ASLayout`** except to know that it represents a computed immutable layout tree and is returned by objects conforming to the `` protocol.
-##Layout Containers
-
-AsyncDisplayKit includes a library of components that can be composed to declaratively specify a layout. The following LayoutSpecs allow you to have multiple children:
-
-* **ASStackLayoutSpec** is based on a simplified version of CSS flexbox. It allows you to stack components vertically or horizontally and specify how they should be flexed and aligned to fit in the available space.
-* **ASStaticLayoutSpec** allows positioning children at fixed offsets.
-
-The following layoutSpecs allow you to layout a single children:
-
-* **ASLayoutSpec** can be used as a spacer if it contains no children
-* **ASInsetLayoutSpec** applies an inset margin around a component.
-* **ASBackgroundLayoutSpec** lays out a component, stretching another component behind it as a backdrop.
-* **ASOverlayLayoutSpec** lays out a component, stretching another component on top of it as an overlay.
-* **ASCenterLayoutSpec** centers a component in the available space.
-* **ASRatioLayoutSpec** lays out a component at a fixed aspect ratio. Great for images, gifs and videos.
-* **ASRelativeLayoutSpec** lays out a component and positions it within the layout bounds according to vertical and horizontal positional specifiers. Similar to the “9-part” image areas, a child can be positioned at any of the 4 corners, or the middle of any of the 4 edges, as well as the center.
-
-##Implementing layoutSpecThatFits:
-
-##Strategy
-
##Layout for UIKit Components:
- for UIViews that are added directly, you will still need to manually lay it out in `didLoad:`
- for UIViews that are added ASDisplay initWithViewBlock, you can then include it in `layoutSpecThatFits:`
-##Debugging with ASCII Art
-
-##Legacy Layout Methods
From 1adeff35e06f26355183dbcc0b6e0a0fe09c73b8 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:57:41 -0700
Subject: [PATCH 22/28] Update automatic-layout-containers.md
---
_docs/automatic-layout-containers.md | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/_docs/automatic-layout-containers.md b/_docs/automatic-layout-containers.md
index b2f4074c..99d4bb3b 100644
--- a/_docs/automatic-layout-containers.md
+++ b/_docs/automatic-layout-containers.md
@@ -4,3 +4,20 @@ layout: docs
permalink: /docs/automatic-layout-containers.html
---
+AsyncDisplayKit includes a library of components that can be composed to declaratively specify a layout. The following LayoutSpecs allow you to have multiple children:
+
+* **ASStackLayoutSpec** is based on a simplified version of CSS flexbox. It allows you to stack components vertically or horizontally and specify how they should be flexed and aligned to fit in the available space.
+* **ASStaticLayoutSpec** allows positioning children at fixed offsets.
+
+The following layoutSpecs allow you to layout a single children:
+
+* **ASLayoutSpec** can be used as a spacer if it contains no children
+* **ASInsetLayoutSpec** applies an inset margin around a component.
+* **ASBackgroundLayoutSpec** lays out a component, stretching another component behind it as a backdrop.
+* **ASOverlayLayoutSpec** lays out a component, stretching another component on top of it as an overlay.
+* **ASCenterLayoutSpec** centers a component in the available space.
+* **ASRatioLayoutSpec** lays out a component at a fixed aspect ratio. Great for images, gifs and videos.
+* **ASRelativeLayoutSpec** lays out a component and positions it within the layout bounds according to vertical and horizontal positional specifiers. Similar to the “9-part” image areas, a child can be positioned at any of the 4 corners, or the middle of any of the 4 edges, as well as the center.
+*
+
+##Strategy
From 5a9ad70cba24dcad6186654c1f208c12af82a0b5 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 15:57:46 -0700
Subject: [PATCH 23/28] Update automatic-layout-debugging.md
---
_docs/automatic-layout-debugging.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/_docs/automatic-layout-debugging.md b/_docs/automatic-layout-debugging.md
index 3dc17845..a43b8e1d 100755
--- a/_docs/automatic-layout-debugging.md
+++ b/_docs/automatic-layout-debugging.md
@@ -3,3 +3,7 @@ title: Automatic Layout Debugging
layout: docs
permalink: /docs/automatic-layout-debugging.html
---
+
+##Debugging with ASCII Art
+
+##ASLayoutSpecPlayground App
From bb2ec72d5d1efae85ec6dbb24dc9c1ac2e34cce7 Mon Sep 17 00:00:00 2001
From: Hannah Troisi
Date: Thu, 7 Apr 2016 16:10:12 -0700
Subject: [PATCH 24/28] Added files via upload
---
static/layout-example-1.png | Bin 0 -> 434708 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 static/layout-example-1.png
diff --git a/static/layout-example-1.png b/static/layout-example-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..aac85798e586c8ea97ebb9494b83032f771b83fa
GIT binary patch
literal 434708
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