Commit Graph

114 Commits

Author SHA1 Message Date
Huy Nguyen
5a2fea7c1d Use bounds and position to layout subnodes, instead of frame because it is not safe in case the transform property constains a non-identity transform. 2015-10-07 21:54:48 +03:00
ricky cancro
89a216b90d Fixes to baseline stack alignment
1) Set the ascender/descender of an ASTextNode when the attributeString is set. Previously ascender/descender were only being computed in `setValuesFromLayoutable` and only when the attribute string was not nil. May make sense to remove the computation from `setValuesFromLayoutable` entirely.
2) Remove ability to allow different children of a stack spec to aling to different baselines. This wasn't working before and I'm not convinced it is possible to do properly/useful enough to invest the time.
3) Have all stack spec run `ASStackBaselinePositionedLayout::compute` to compute the stack's ascender and descender. Even if the stack isn't aligning its children to a baseline, the stack itself may be a child of another stack that IS aligning to a baseline.
2015-10-06 21:41:39 -07:00
Garrett Moon
8a70c8d416 Adds support for disabling and re-enabling should rasterize. 2015-10-06 11:47:13 -07:00
Garrett Moon
b1d03f1d58 Address comments 2015-10-05 16:02:01 -07:00
Garrett Moon
d6c107a896 Fix shouldRasterizeSubnodes skipping setting offset and clipping. 2015-10-05 16:02:01 -07:00
Scott Goodson
61bb4f022e Improved messages for thread affinity and frame transform identity assertions. 2015-10-04 11:15:57 -07:00
Garrett Moon
c90708a25b Corner radius and clipsToBounds should be captured outside block 2015-10-02 09:30:49 -07:00
Scott Goodson
a58844379c Implementation of Synchronous Concurrency features for AsyncDisplayKit 2.0
This provides internal features on _ASAsyncTransaction and ASDisplayNode to facilitate
implementing public API that allows clients to choose if they would prefer to block
on the completion of unfinished rendering, rather than allow a placeholder state to
become visible.

The internal features are:
-[_ASAsyncTransaction waitUntilComplete]
-[ASDisplayNode recursivelyEnsureDisplay]

Also provided are two such implementations:
-[ASCellNode setNeverShowPlaceholders:], which integrates with both Tables and Collections
-[ASViewController setNeverShowPlaceholders:], which should work with Nav and Tab controllers.

Lastly, on ASDisplayNode, a new property .shouldBypassEnsureDisplay allows individual node types
to exempt themselves from blocking the main thread on their display.

By implementing the feature at the ASCellNode level rather than ASTableView & ASCollectionView,
developers can retain fine-grained control on display characteristics.  For example, certain
cell types may be appropriate to display to the user with placeholders, whereas others may not.

Follow-up work will include unit tests, revisiting names, and the header locations of definitions.
2015-09-27 19:14:36 -07:00
Scott Goodson
47be24037d Reduce _ASAsyncTransaction allocations by ensuring nodes without display methods don't create them. 2015-09-24 19:26:00 -07:00
Jack Flintermann
ce33149548 make additional private headers actually private; import all public headers in AsyncDisplayKit.h 2015-09-16 23:31:48 -04:00
rcancro
9c8aaeb17e Move ASLayoutOptionsPrivate to the private folder
fixes:
https://github.com/facebook/AsyncDisplayKit/issues/654
2015-09-15 17:11:20 -07:00
rcancro
2f3562fa09 scott's comments 2015-09-15 09:11:19 -07:00
rcancro
01be5acece added a callback for initWithViewBlock/initWithLayerBlock 2015-09-14 20:36:08 -07:00
rcancro
b14e189bfb Addressed comments to LayoutOptions PR 2015-09-11 16:07:18 -07:00
rcancro
4bb8472182 Removed ASBaselineLayoutSpec and made baseline alignment part of ASStackView 2015-09-10 17:29:39 -07:00
Ethan Nagel
8ea40a0265 Merge branch 'master' into ASDisplayNode-init-perf
Conflicts:
	AsyncDisplayKit/ASDisplayNode.mm
	AsyncDisplayKit/Private/ASDisplayNodeInternal.h
2015-09-09 22:17:49 -07:00
rcancro
5786bc1b5b Fixed infinite recursion in finalLayoutable, removed child properties from ASLayoutSpecs 2015-09-08 09:50:47 -07:00
rcancro
8263a9f53a Kittens sample working 2015-09-08 09:50:47 -07:00
rcancro
cbaf178950 Hide ASLayoutOptions from the user 2015-09-08 09:50:47 -07:00
rcancro
15b3fd6eab Moved ASLayoutable* properties into ASLayoutOptions class 2015-09-08 09:50:27 -07:00
Garrett Moon
32582fca58 Fixes shouldRasterizeSubnodes
Currently, subnodes of nodes marked with shouldRasterizeSubnodes do not get layout calls. This adds the call to layout and changes the __layout method to reference self.bounds instead of _layer.bounds.

Also adds support for corner radius when rasterizing subnodes.
2015-09-01 13:25:27 -07:00
rcancro
9bf62d14ab Merge remote-tracking branch 'upstream/master' into baseline
# Conflicts:
#	AsyncDisplayKit/Layout/ASLayoutSpec.h
#	AsyncDisplayKit/Layout/ASStackLayoutSpec.mm
2015-08-24 09:54:36 -07:00
rcancro
1d31a21ccb Merge branch 'baseline' of github.com:rcancro/AsyncDisplayKit into baseline
# Conflicts:
#	AsyncDisplayKit.xcodeproj/project.pbxproj
#	AsyncDisplayKit/ASTextNode.h
#	AsyncDisplayKit/Details/ASDataController.mm
2015-08-22 19:14:59 -07:00
rcancro
e991242513 removed "Stack" from baseline related layout names 2015-08-22 19:03:55 -07:00
rcancro
49ac178166 huy's comments 2015-08-22 19:03:55 -07:00
ricky cancro
5d286930f6 Renamed ASStackText... to ASBaselineStack... 2015-08-22 19:03:54 -07:00
rcancro
830d39af92 fixed bug for baseline last 2015-08-22 19:03:54 -07:00
ricky cancro
2d6ddfe32e moved baseline alignment to a layout spec. 2015-08-22 19:03:54 -07:00
rcancro
9036ab8e7d new stack layout spec for text 2015-08-22 19:03:54 -07:00
ricky cancro
ef89f758bc flailing 2015-08-22 19:03:54 -07:00
ricky cancro
3fd241e87e fixed vertical spacing bug and typo 2015-08-22 19:03:54 -07:00
ricky cancro
cf428831a4 Added baseline spacing for vertical stack views. 2015-08-22 19:03:54 -07:00
ricky cancro
f289b3345a Add baseline support to ASStackLayoutSpec 2015-08-22 19:03:54 -07:00
rcancro
0ea276e3ab huy's comments 2015-08-22 18:47:16 -07:00
Huy Nguyen
f7f20ca8b7 preferredFrameSize should be used even if neither -layoutSpecThatFits: nor -calculateSizeThatFits: is overridden by subclassses. 2015-08-22 17:09:57 -07:00
Huy Nguyen
b93faab7f5 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-22 17:09:57 -07:00
rcancro
c06a6be188 ASLayoutSpec are temporarily mutable and have a more obj-c interface 2015-08-21 16:02:36 -07:00
ricky cancro
023ad89815 Renamed ASStackText... to ASBaselineStack... 2015-08-21 08:54:28 -07:00
rcancro
0a398301b0 fixed bug for baseline last 2015-08-20 20:43:18 -07:00
ricky cancro
f404231b35 moved baseline alignment to a layout spec. 2015-08-20 10:38:54 -07:00
rcancro
e7ffe67e3c new stack layout spec for text 2015-08-19 22:03:02 -07:00
ricky cancro
774d91653b flailing 2015-08-19 16:59:23 -07:00
Ethan Nagel
5dabd20b54 Merge branch 'master' into ASDisplayNode-init-perf
Conflicts:
	AsyncDisplayKit/ASDisplayNode.mm
2015-08-17 11:46:29 -07:00
appleguy
3983bf2289 Merge pull request #603 from nguyenhuy/improved_external_relayout
Improve relayout when constrained size of all nodes is changed
2015-08-15 22:07:50 -07:00
ricky cancro
11896904a2 fixed vertical spacing bug and typo 2015-08-15 09:45:14 -07:00
ricky cancro
d7564e18e5 Added baseline spacing for vertical stack views. 2015-08-15 08:17:43 -07:00
Ethan Nagel
176e4962bf Perform one-time initializations in +initialize when possible 2015-08-14 14:41:13 -07:00
Huy Nguyen
1313c11519 preferredFrameSize should be used even if neither -layoutSpecThatFits: nor -calculateSizeThatFits: is overridden by subclassses. 2015-08-13 07:53:00 +03: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
ricky cancro
afffd9cfb2 Add baseline support to ASStackLayoutSpec 2015-08-12 16:55:12 -07:00