154 Commits

Author SHA1 Message Date
Huy Nguyen
7dc9b7fc40 Fix appledoc warnings. 2015-09-15 00:58:48 +03:00
Scott Goodson
a01d21f509 Switch to use only layers in the offscreen window used for the render range.
Accomodate and document unusual cases in which it is necessary to remove views when clearing backing stores.

ASDK layout and display calls don't depend on UIView in any way, so this
will achieve the necessary behavior of the render range while eliminating significant
UIView-specific overhead from heirarchy manipulation.
2015-09-07 14:20:57 -07:00
Garrett Moon
98b41a4b1c scrollable directions was invalid for non-flow layouts as bounds and contentSize were zero on init 2015-08-26 16:15:18 -07:00
Huy Nguyen
97f323a8d9 Fix relayoutAllRows to trigger measurement (with the new constrained size) on all nodes, including loading ones. 2015-08-21 01:02:19 +03:00
Scott Goodson
60cf43766b Revert "Switch to use only layers for offscreen working range window."
There is an unsolved issue with this optimization that may cause crashes
in certain cases.  Reverting until it's properly resolved.  It doesn't
appear to be possible to cause the issue in the test apps used to develop it.

This reverts commit 3f982b5c9a7e4a557c102268f11f71b58085ffef.
2015-08-17 17:19:51 -07:00
appleguy
bd9c9030d9 Merge pull request #610 from SRandazzo/606_sizezero_nil_text
Return CGSizeZero when computing the size of zero-length strings in ASTextNode.
2015-08-17 17:06:54 -07:00
Sal
05cb1d734d use attributedString.length instead of attributedString.string.length to check for empty strings 2015-08-16 18:24:20 -04:00
Sal
344c472349 Return CGSizeZero if ASTextNode's text length or attributed string is nil 2015-08-13 13:53:08 -04:00
Huy Nguyen
7249661990 Improve relayout when constrained size of all nodes is changed:
- In -layoutSubviews of table and collection views, detect changes that cause a different constrained size for nodes, and trigger relayout immediately.
- Orientation change can be handled by this solution. So, no need to observe to its events.
- Update Kittens example to support iPad (easier to catch bugs on these devices) and add a title to navigation bar (looks a bit nicer).
2015-08-13 06:28:47 +03:00
Scott Goodson
3f982b5c9a Switch to use only layers for offscreen working range window.
ASDK layout and display calls don't depend on UIView in any way, so this
will reduce UIView-specific overhead from heirarchy manipulation.
2015-08-12 18:03:47 -07:00
Huy Nguyen
a3c2dbf8cd Table and collection views' async data source can provide different constrained size per node. And because the size is of type ASSizeRange, it has a min size that is very helpful in many cases.. 2015-08-12 22:45:08 +03:00
appleguy
d401b0e5f6 Merge pull request #593 from shannonma/merge_fork
Fixes for ASTextNode test, setNeedsDisplay and font loading failures
2015-08-08 18:55:00 -07:00
Huy Nguyen
e657bedd40 Automatically relayout cells after orientation changed. 2015-08-09 00:36:58 +03:00
Roy Marmelstein
76e5f794da Fixing framework target build issues - missing info plist and headers 2015-08-03 23:47:53 +02:00
Shannon Ma
d5de2a22fd Text node to gracefully fail upon font failure 2015-07-31 12:24:04 -07:00
Ethan Nagel
bf0766169b PR Feedback: Require main thread for all edit commands, various cleanup. 2015-07-20 22:08:19 -07:00
Ethan Nagel
f497639124 Add support automatically adjusting the content offset to UITableView as well as support for performing endUpdates with no animations. Additionally, there are critical bug fixes for ASDataController (begin/end updates delegates not called in correct order) and ASRangeController (failure to fully refresh internal state when inserts or delete are made.) 2015-07-20 14:05:56 -07:00
Huy Nguyen
cfac6c992a [appledoc] Fix appledoc warnings. (#553) 2015-07-10 19:02:04 +07:00
Bogdan Iusco
a0fcecc469 Fix duplicate symbols on ASIndexPath 2015-07-07 18:23:04 +03:00
Huy Nguyen
9678adaa93 Merge branch 'master' into layout_node 2015-07-06 22:21:32 +07:00
appleguy
3f574a3306 Merge pull request #521 from jflinter/jack-uiresponder-additions
Add UIResponder methods to ASDisplayNode
2015-07-04 22:36:09 -07:00
Scott Goodson
6220d65747 Property declaration tweak for odd Travis build failure (only on the Tests build). 2015-07-04 20:54:04 -07:00
Scott Goodson
8fa092fb77 Complete overhaul of ASFlowLayoutController.
Introduced ASIndexPath for efficient handling of index paths in C++ vectors,
while maintaining the readability of ".section" and ".row" instead of
".first" and ".second" inside of complicated business logic.

Confirmed that the working range calls are firing appropriately during
ASTableViewStressTest, including the deallocation of the rich text placeholders
provided by ASTextNode.
2015-07-04 20:22:04 -07:00
Scott Goodson
57465c7fd3 Overhaul ASDataController and extensively test ASTableView.
This diff resolves all known consistency issues with ASTableView and ASCollectionView.
It includes significantly more aggressive thrash-testing in ASTableViewStressTest,
which now passes on a variety of device and simulator configurations.  It also updates
the unit tests run on every commit to ensure any regression is caught quickly.

A few of the salient changes in this diff:
- ASTableView now uses Rene's ASCollectionViewLayoutController, and actually uses a
UICollectionViewFlowLayout without any UICollectionView.  This resolves an issue where
ASFlowLayoutController was generating slightly out-of-bounds indicies when programmatically
scrolling past the end of the table content.  Because the custom implementation is likely
faster, I will revisit this later with profiling and possibly returning to the custom impl.
- There is now a second copy of the _nodes array maintained by ASDataController.  It shares
the same node instances, but this does add some overhead to manipulating the arrays. I've
filed a task to follow up with optimization, as there are several great opportunities to
make it faster.  However, I don't believe the overhead is a significant issue, and it does
guarantee correctness in even the toughest app usage scenarios.
- ASDataController no longer supports calling its delegate /before/ edit operations.  No
other class was relying on this behavior, and it would be unusual for an app developer to
use ASDataController directly.  However, it is possible that someone with a custom view
that integrates with ASDataController and ASRangeController could be affected by this.
- Further cleanup of organization, naming, additional comments, reduced code length
wherever possible.  Overall, significantly more accessible to a new reader.
2015-06-28 18:03:45 -07:00
Huy Nguyen
e74823bbee Merge branch 'master' into layout_node 2015-06-28 23:47:09 +07:00
Scott Goodson
feba7f8ed1 Update the identifier that AsyncDisplayKit uses to label its internal queues (2/2). 2015-06-27 12:10:58 -07:00
Scott Goodson
dc19970fe8 Clean up organization and naming of methods internal to ASDataController. 2015-06-27 11:48:55 -07:00
Scott Goodson
06cfe68cbd Clean up ASDataController for readability & API naming consistency. 2015-06-27 11:06:54 -07:00
Jack Flintermann
0b14d42033 add UIResponder methods to ASDisplayNode 2015-06-27 03:19:51 -04:00
Huy Nguyen
abe98d5b09 Integrate new layout nodes to the framework.
- Introduce ASLayoutNode and its subclasses.
- ASDisplayNode measures its ASLayoutNode and cache the result (ASLayout). Calculated size and position of each subnode can be retrieved from the calculated layout.
- Custom nodes need to override -layoutNodeThatFits:(CGSize) instead of -calculateSizeThatFits:(CGSize).
- Custom nodes do not need to layout its subnodes (in -layout:) anymore. ASDisplayNode can handle the job most of the time, by walking through its layout tree.
- ASCompositeNode is used to embed (display) subnodes to a node's layout. That way, each subnode will also be measured while the parent node is measuring. And the parent node knows where its subnodes are within its layout.
2015-06-25 11:34:35 +07:00
Victor Mayorov
a299a5b550 Implemented UIAccessibilityIdentification for ASDisplayNode 2015-06-24 11:03:51 -07:00
Rene Cacheaux
60e676a38a Adds ASCollectionViewLayoutController and convenience CGRect/ASScrollDirection functions. Fixes default collection view range tuning parameters for Preload and Render ranges; values were flipped. 2015-06-23 07:30:13 -05:00
Rene Cacheaux
4aa796d894 Merge branch 'master' into CollectionViewLayoutSupport 2015-06-21 23:17:41 -05:00
appleguy
607367aacf Merge pull request #496 from facebook/DataControllerCrash
Improvements to thread safety during closely spaced edit events.
2015-06-21 21:16:05 -07:00
Scott Goodson
c700618862 Improvements to thread safety during closely spaced edit events.
This applies primarily when beginUpdates / endUpdates is not used.
Due to user interaction-driven edits, like reloads or adding content
at the bottom, sometimes this is unavoidable in app design and thus
critical.

I have a diff in flight to make ASDataController / ASRangeController
robust against very aggressive thrash testing, which will be added
both to the unit test suite and this new example project.
2015-06-21 21:04:09 -07:00
Rene Cacheaux
777b48cc33 Adds layout controller for collection views. This new layout controller leverages UICollectionViewLayout's layoutAttributesForElementsInRect in order to calculate index paths for items in AsyncDisplayKit ranges. Flow layout is still a requirement in order to test the waters. 2015-06-21 18:37:00 -05:00
Rene Cacheaux
0adac6851a Adds abstract ASLayoutController implementation in preparation for custom layout ASLayoutController implementation. 2015-06-21 13:24:24 -05:00
Rene Cacheaux
33118df73b Merge branch 'master' into CollectionViewLayoutSupport 2015-06-21 11:45:56 -05:00
Rene Cacheaux
e46c13edc5 Exposes ASCollectionView's ability to determine scroll direction. Scroll direction detection can now support 2-axis collection view layouts. ASCollectionView can now determine scrollable axes. 2015-06-21 11:45:25 -05:00
appleguy
ed4ccfcc7f Merge pull request #491 from RCacheaux/CollectionViewLayoutSupport
Custom Collection view layout prep PR
2015-06-20 20:18:54 -07:00
Scott Goodson
904905189c Remove -[_ASDisplayView layoutSubviews] and use only -[_ASDisplayLayer layoutSublayers].
This helps us support special cases such as ASScrollNode correctly driving the -layout
method for subclasses even though it is based on UIScrollView & can't use _ASDisplayView.

I suspect this will be useful for ASCollectionNode and ASTableNode as well, which would
allow nesting those classes inside of other collections / tables (e.g. horizontal
unit within a vertical unit).
2015-06-20 19:40:01 -07:00
Rene Cacheaux
a7f7620b8c Turns ASScrollDirection into Option set in preparation for supporting 2-axis collection view layouts. Clears test host target warnings. 2015-06-20 18:25:48 -05:00
VictorM
2c74904368 Fixed crash with deallocated CGImageRef 2015-06-11 10:42:28 +03:00
Victor Mayorov
9c20edb310 Added checking that sessionTask hasn't been added during creation of previous one 2015-06-10 17:58:35 +03:00
Victor Mayorov
7359e2255d Added synchronisation for sessionTask property 2015-06-10 17:50:21 +03:00
Victor Mayorov
7167e4a589 Fixed ASBasicImageDownloader to handle multiple request with the same URL 2015-06-10 15:38:51 +03:00
Scott Goodson
e3f0e66cb3 Updating API names for network range and memory culling before ASDK 1.2 tag. 2015-05-21 22:43:38 -10:00
appleguy
079da308ef Merge pull request #437 from eanagel/ASDataController-release-nodes
ASDataController dealloc, ensure cell nodes are not in a superview
2015-05-16 22:49:55 -10:00
appleguy
33c5a72002 Merge pull request #432 from tonklon/master
ASTextNode expose exclusion paths
2015-05-16 22:19:47 -10:00
Ethan Nagel
38f08c9bd8 support layers as well as views when doing ASDisplayCell cleanup (in case we add support for layer-backed ASDisplayCells in the future.) 2015-05-03 21:45:33 -07:00