252 Commits

Author SHA1 Message Date
Nadine Salter
bd612fd725 Example projects. 2014-10-01 16:27:00 -07:00
Nadine Salter
0adab165ec Minor ASRangeController correctness fix. 2014-10-01 16:02:41 -07:00
Nadine Salter
aa7b545592 Provide default ASTextNode linkAttributeNames.
TextKit machinery automatically applies styling to text marked with the
NSLink attribute, but because ASTextNode is unaware of it, the node's
tap handler doesn't treat NSLinks as links.  Add NSLinkAttributeName to
the default linkAttributeNames property.
2014-10-01 15:55:16 -07:00
Nadine Salter
17fcca19ce s/richTextNode/textNode/g.
ASTextNode's delegate methods are all prefixed with "richTextNode".
Rename these to "textNode" for consistency.
2014-10-01 15:54:03 -07:00
Nadine Salter
a82364a54b Don't expose hierarchy notifs in public node API.
`-[ASDisplayNode willEnterHierarchy]` and `-didExitHierarchy` are
subclass hooks and should not be called directly -- doing so will
trigger an assertion!  Move these declarations to the subclassing
header.
2014-10-01 13:40:27 -07:00
Nadine Salter
20631a632f Fix unsafe unretained references in ASControlNode.
Fix regression from the ARC conversion.  Change the raw, unretained
pointers in ASControlNode to weak references.  Use NSMapTable instead of
the pointer-as-NSValue system.
2014-09-30 14:26:08 -07:00
Nadine Salter
af6c11ade7 Remove unused methods.
`-[ASDisplayNode addSubnodeAsynchronously::]` and
`-replaceSubnodeAsynchronously:::` are unused and confusingly increase
AsyncDisplayKit's API surface.  `-addSubnode:` and friends are
thread-safe and can be used on background threads, so removing these
methods does not constitute a decrease in functionality.
2014-09-29 14:55:26 -07:00
Nadine Salter
c51a58cd85 Update ASDisplayNodeInternal.h. 2014-09-26 15:17:46 -07:00
Nadine Salter
77e1337f3c Beta 2. 2014-09-24 17:59:42 -07:00
Nadine Salter
57092baad7 Work around rdar://18448377. Fixes #29. 2014-09-24 17:56:19 -07:00
Nadine Salter
b8afd06b37 Fix issue #28. 2014-09-24 14:23:42 -07:00
Nadine Salter
f77f63878d Fix issue #27. 2014-09-24 14:23:31 -07:00
Nadine Salter
05cb52ad21 Fix ASDealloc2MainObject header export. 2014-09-24 14:23:09 -07:00
Nadine Salter
d993730a7d Merge pull request #25 from toulouse/master
Minor ASTableView bugfix.
2014-09-23 16:42:06 -07:00
Nadine Salter
803585164c Convert AsyncDisplayKit to ARC. 2014-09-23 15:30:30 -07:00
Andrew Toulouse
1b3cf4d8b5 Annotate -didLoad with an attribute (if supported) that will flag missing didLoad calls 2014-09-22 21:58:49 -07:00
Andrew Toulouse
3aa6fc0d38 Mehod -numberOfSectionsInTableView: is optional but not conditionally checked
The documentation for `UITableViewDataSource` specifies that the default value is 1, and that its implementation is optional. However, ASTableView's forwarding doesn't account for the unimplemented case. The desired behavior is to return 1 in the case that the method is not implemented.
2014-09-22 21:19:43 -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
6385599a35 Added Travis configuration 2014-09-22 11:08:11 -07:00
Nadine Salter
0053e00a52 Add image-modification support to ASImageNode. 2014-09-08 17:09:14 -07:00
Nadine Salter
4da9912e2c Merge pull request #17 from lorixx/master
Use `ClassName` instead of _ClassName_ in ASDisplayNode.h.
2014-09-05 11:03:42 -07:00
Nadine Salter
5721b6c6d3 Merge pull request #18 from raphaelmor/fix-failing-unit-tests
Use XCTAssertEqualWithAccuracy in ASTextNodeWordKernerTests.
2014-09-05 11:02:35 -07:00
Raphaël Mor
06e3f1e062 Replaced magic number by FLT_EPSILON 2014-09-05 07:55:22 +02:00
Raphaël Mor
99fb196407 Fix unit tests in ASTextNodeWordKernerTests
Tests were comparing CGFloats with ==. XCTAssertTrue has been replaced
by XCTAssertEqualWithAccuracy
2014-09-03 08:12:36 +02:00
Zhisheng Huang
2ea7ca7747 Remove the underscore doc style copied from README.md 2014-08-29 16:04:16 -07:00
Nadine Salter
5aa90aebc3 Fix ASTextNode default background colour. (Whoops!) 2014-08-28 13:59:17 -07:00
Nadine Salter
baaff5e0f4 Set ASTextNode default background colour. 2014-08-28 13:57:12 -07:00
Nadine Salter
49bfaaedd9 Fix minor typo in README. 2014-08-20 15:43:30 -07:00
Arnaud Coomans
fa69183b49 Merge pull request #14 from acoomans/development
Updated README
2014-08-19 19:40:52 -07:00
Arnaud Coomans
99414a1f59 Updated README 2014-08-19 19:37:58 -07:00
Nadine Salter
1e2f39ea09 Merge pull request #16 from mboyd1017/master
Change ASTextNode's userInteractionEnabled default to NO.
2014-08-15 16:46:16 -07:00
Madelaine Boyd
a6a2907ad9 userInteractionEnabled defaults to NO
Previously self.userInteractionEnabled defaulted to YES, and this
caused plenty of bugs for me when text nodes would silently steal
touches. It should default to NO, and callers who want tappability on
their text nodes should manually set .userInteractionEnabled to YES.
2014-08-15 12:07:24 -07:00
Arnaud Coomans
5e5cac1b7d Updated README 2014-08-12 14:38:38 -07:00
Nadine Salter
a471eca87b Merge pull request #12 from acoomans/development
ASDisplayNode documentation
2014-08-08 22:43:59 -07:00
Arnaud Coomans
9a18a475a7 Fixed documentation 2014-08-08 17:06:57 -07:00
Arnaud Coomans
f8a6e8063d Reformatted ASDisplayNode documentation 2014-08-06 18:16:59 -07:00
Nadine Salter
aafd0f3514 Update ASTextNode tests for iOS 8 (fixes #10). 2014-08-06 17:21:46 -07:00
Arnaud Coomans
8b8a8fdb0d Files organization 2014-08-05 16:48:46 -07:00
Nadine Salter
07a538a2dc Update comments with correct symbol names (#11).
* ASDisplayNodeAsyncView -> _ASDisplayView
* ASDisplayNodeView -> ASDisplayNodeViewProperties
2014-07-30 15:59:06 -07:00
Nadine Salter
11eb47c87e Update README to reference umbrella header (#9). 2014-07-23 15:19:37 -07:00
Nadine Salter
b5f45d698f Merge pull request #9 from toulouse/master
Add umbrella header
2014-07-23 15:18:04 -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
Nadine Salter
986fa0246a Merge pull request #6 from toulouse/flagNaming
Unify boolean flag naming confention, getter spacing, and property attribute naming
2014-07-17 13:58:26 -07:00
Andrew Toulouse
a35c109a08 Unify boolean flag naming confention, getter spacing, and property attribute naming
Summary:
* Fixes #3
* Ordering: atomicity, then [optional] readonly, then value semantics (retain/copy/assign)
* Removed redundant `readwrite`
* No spaces between "getter = name" ("getter=name" instead)
* Property method overrides renamed as well
* self.isBlah, while technically not entirely correct, still resolves to [self blah], so left alone (@kimon had advice on this sort of naming issue last summer), and largely inconsequential

Test Plan:
* Compile and run
2014-07-17 13:18:47 -07:00
Nadine Salter
f504ab4d15 Merge pull request #4 from toulouse/master
Export ASThread to unbreak the subclass header files
2014-07-17 12:52:17 -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
291fa885cc Merge pull request #2 from fastred/format_specifiers
Fix incorrect string format specifier for NSInteger
2014-06-30 14:08:17 -07:00
Arkadiusz Holko
00573e5368 Fix incorrect string format specifier for NSInteger 2014-06-30 22:56:06 +02:00
Nadine Salter
752b084df1 Merge pull request #1 from DanielTomlinson/feature/precision-warnings
Use correct format identifiers for logs on 64 bit systems.
2014-06-27 11:38:28 -07:00
Daniel Tomlinson
a38e86f039 Use correct format identifiers for logs on 64 bit systems. 2014-06-27 19:09:27 +01:00