9 Commits

Author SHA1 Message Date
Nadine Salter
6cfb347355 Shared schemes. 2014-10-15 10:52:13 -07:00
Ian Cloutier
41c3289a11 Fix retain cycles in ASDisplayNode and ASTableView 2014-10-09 19:00:38 -04:00
Nadine Salter
05cb52ad21 Fix ASDealloc2MainObject header export. 2014-09-24 14:23:09 -07:00
Nadine Salter
803585164c Convert AsyncDisplayKit to ARC. 2014-09-23 15:30:30 -07:00
Nadine Salter
7dd94a6102 Merge in downstream changes.
Introduce `ASTableView`, a UITableView subclass that uses `ASCellNode`
instead of UITableViewCell.  Add working range support via
`ASRangeController`, which observes the visible range, maintains a
working range, and handles most ASDK machinery.  ASRangeController is
loosely-enough coupled that it should be easily adapted to
UICollectionView if that's desired in the future.

Notable considerations in the ASRangeController architecture:

* There's no sense rewriting UITableView -- the real win comes from
  using nodes instead of UITableViewCells (easily parallelisable
  computation, large number of cells vs. few table views, etc.).  So,
  use a UITableView with empty cells, using UITableViewCell's
  contentView as a host for arbitrary node hierarchies.

* Instead of lazy-loading cells the instant they're needed by
  UITableView, load them in advance.  Preload a substantial number of
  nodes in the direction of scroll, as well as a small buffer in the
  other direction.

* Maintain compatibility with UITableView's API, with one primary change
  -- consumer code yields configured ASCellNodes, not UITableViewCells.

* Don't use -tableView:heightForRowAtIndexPath:.  Nodes already compute
  their preferred sizes and cache results for use at layout-time, so
  ASTableView uses their calculatedSizes directly.

* Corollary:  ASTableView is only aware of nodes that have been sized.
  This means that, if a cell appears onscreen, it has layout data and
  can display a "realistic placeholder", e.g. by making its subnodes'
  background colour grey.

Other improvements:

* Remove dead references and update headers (fixes #7, #20).

* Rename `-[ASDisplayNode sizeToFit:]` to `-measure:` and fix
  `constrainedSizeForCalulatedSize` typo (fixes #15).

* Rename `-willAppear` and `-didDisappear` to `-willEnterHierarchy` and
  `-didExitHierarchy`.  Remove `-willDisappear` -- it was redundant, and
  there was no counterpart `-didAppear`.

* Rename `viewLoaded` to `nodeLoaded`.
2014-09-22 14:33:39 -07:00
Arnaud Coomans
8b8a8fdb0d Files organization 2014-08-05 16:48:46 -07:00
Andrew Toulouse
1efe3d95d6 Add umbrella header
Summary:
Import the headers for control, image, and text nodes, as well as the normal display node and helper functions. Subclass headers omitted as they are intended to be imported in subclass implementation files, not public headers.

Test Plan:
`#import <AsyncDisplayKit/AsyncDisplayKit.h>` followed some time later by:
```
ASDisplayNode *node;
ASImageNode *node2;
ASTextNode *node3;
ASControlNode *node4;
```
2014-07-18 00:30:32 -07:00
Andrew Toulouse
0741f89a55 Export ASThread to unbreak the subclass header files
Summary:
* Moves ASThread.h from Private to Public visibility
* Moves ASThread.h from Private/ to Details/
* Changes public #imports from "" to <>

Test Plan:
```
#import <AsyncDisplayKit/ASDisplayNode+Subclasses.h>
#import <AsyncDisplayKit/ASControlNode+Subclasses.h>
```
2014-07-16 15:25:15 -07:00
Nadine Salter
15565873c9 Initial commit. 2014-06-26 22:32:55 -07:00