Commit Graph

3500 Commits

Author SHA1 Message Date
Adlai Holler
85fee6b609 Fix the dealloc test (#2216) 2016-09-08 14:25:00 -07:00
Adlai Holler
bc59b96ca9 [ASDisplayNode] Add onDidLoad Method to Perform Work When Loaded (#2128)
* [ASDisplayNode] Add `onDidLoad:` method

* Prevent user from rasterizing wrapper nodes – they can't be reloaded in the future
2016-09-08 14:18:35 -07:00
Hannah Troisi
593f13d800 Improve crash logging [@johnepinterest] (#2210) 2016-09-08 14:06:49 -07:00
Adlai Holler
12ab2e3759 Fix equality in ASTextKitRendererKey (#2215) 2016-09-08 12:59:03 -07:00
Michael Schneider
0d8518912e Initial commit to throw an exception if manually adding / removing subnodes if node has automaticallyManagesSubnodes enabled (#2214) 2016-09-08 11:59:57 -07:00
Michael Schneider
53a6743908 Don't use automaticallyManageSubnodes in ASTextCellNode (#2212) 2016-09-08 11:17:50 -07:00
Adlai Holler
5593bfa4d1 [ASDisplayNode] Majorly Improve Descriptions (#2208)
* Up our description game big time

* Couple tweaks

* Explain logic

* Fix indentation
2016-09-07 20:11:27 -07:00
Michael Schneider
0aeefaf25f [Layout] Automatic measurement on layout fixes (#2206)
* Don't measure range managed nodes automatically in the layout pass

* Fix auto measure a node mid transition
2016-09-07 12:46:05 -07:00
Michael Schneider
8897614f0e [Layout] Layout API based on content area (#2110)
* Initial commit for adding a size constraint to ASLayoutable's

* Some more commits

* Fix sample projects in extra/

* Remove preferredFrameSize test of ASEditableTextNode

* Remove preferredFrameSize from examples_extra

* Add deprecation warning to -[ASDisplayNode preferredFrameSize]

* Add deprecation warning to -[ASDisplayNode measureWithSizeRange:]

* Commit

* Commit

* Remove ASRelativeSizeRange

* Make ASRelativeSize private

* Adjust examples

* Improve setting of -[ASLayoutable size] with points or fractions

* Add ASWrapperLayoutSpec

* Improve creation of ASRelativeDimension

* Add `preferredFrameSize` back and add deprecated logging

* Add `layoutSpecBlock` setter and getter and add locking for it

* Add better documentation and fix macros to create ASRelativeDimension

* Create new ASSizeRangeMake with just a CGSize as parameter

* Update Kitten and Social App Layout example

* Add layoutThatFits: and deprecate measure:

* Rename ASRelativeDimension to ASDimension

* Fix examples for ASDimension renaming

* Remove fancy height and width setter

* Fix ASDimension helper

* Rename -[ASLayout layoutableObject] to -[ASLayout layoutable]

* Update layout related methods and more clearer documentation around how to use it

* Deprecate old ASLayout class constructors

* Don't unnecessary recalculate layout if constrained or parent size did not change

* Use shared pointer for ASDisplayNodeLayout

* Fix rebase conflicts

* Add documentation and move implementation in mm file of ASDisplayNodeLayout

* Fix test errors

* Rename ASSize to ASLayoutableSize

* Address comments

* Rename setSizeFromCGSize to setSizeWithCGSize

* Improve inline functions in ASDimension

* Fix rebase conflicts
2016-09-07 08:44:48 -07:00
Adlai Holler
2bfeb6de92 Add a failing unit test for automeasuring a node mid-transition (#2204) 2016-09-06 17:58:12 -07:00
ricky
180fcbbc5e [ASViewController] stop propagating traits in the viewWill... methods (#2202)
* [ASTraitCollection] Fix 2 bugs dealing with trait propagation

* Don’t propagate on `viewWillTransitionToTraitCollection`. This is too early
* Pass the size from `viewWillTransitionToSize` as the container size in `traitCollectionDidChange`

* using the old trait collection’s size doesn’t actually make sense.

* Instead of propagating on viewWillTransitionToSize, do it in viewWillLayoutSubviews
2016-09-06 15:23:32 -07:00
Michael Schneider
2388f67474 [ASTextNode] Add NSCache based cache for ASTextKitRenderer (#2199)
* Add cache implementation

* Remove old ASEqualityHashHelpers

* Some more ASEquality and ASEqualityHashHelper cleanup

* Add cache for text renderer in ASTextNode

* Move from C++ LRU renderer cache to NSCache based renderer cache
2016-09-06 15:23:21 -07:00
Huy Nguyen
6124830b23 Fix assertion messages in ASCollectionViewFlowLayoutInspector (#2196) 2016-09-06 11:43:13 -07:00
Hannah Troisi
03c21830a5 improve layoutSpecThatFits: assertion message (#2201) 2016-09-06 11:42:59 -07:00
Adlai Holler
b233122604 Check the image alpha value correctly (#2198) 2016-09-05 21:27:50 -07:00
Adlai Holler
607ec8f4a5 [ASImageNode] Use kCGBlendModeCopy when Possible (#2197)
* [ASImageNode] Use kCGBlendModeCopy when possible

* Make the blend mode logic more readable
2016-09-05 20:52:06 -07:00
Adlai Holler
e233a1cccc [Unit Testing] Add Realistic Text Data Set (#2188)
* Add a mechanism to save attributed strings given to text nodes

* Setup performance tests to have an iteration variable

* Use realistic data in new text node performance test case

* Revert temporary changes
2016-09-05 12:30:06 -07:00
Levi McCallum
5db57802b0 Add preprocessor definition for disabling container state changes (#2193) 2016-09-05 12:00:45 -07:00
Levi McCallum
76107ae466 Use NS_VALID_UNTIL_END_OF_SCOPE macro (#2192) 2016-09-04 17:44:38 -07:00
Adlai Holler
90c59e0de7 Remove completely unused layoutManagerDelegate things (#2189) 2016-09-04 12:01:42 -07:00
Levi McCallum
4dd5189f6c Remove unnecessary explicit bool check (#2190) 2016-09-04 12:00:35 -07:00
Michael Schneider
37416f1696 Set alignItems to ASStackLayoutAlignItemsStretch in ASStackLayoutSpec (#2187)
To align with the CSS `align-items` property we should set alignItems to `ASStackLayoutAlignItemsStretch` instead of `ASStackLayoutAlignItemsStart`: https://drafts.csswg.org/css-flexbox-1/#propdef-align-items
2016-09-03 21:05:59 -07:00
Adlai Holler
2c8a2d0bbd Use CACurrentMediaTime for performance benchmarks (#2185) 2016-09-02 18:42:39 -07:00
Adlai Holler
5c42bb4e2f Add tests to confirm CALayer behaviors (#2184) 2016-09-02 15:10:15 -07:00
Michael Schneider
9b823ebdc9 Add better exception message for adding or removing ASDisplayNode's in layoutSpecThatFits: (#2183) 2016-09-02 14:58:19 -07:00
Adlai Holler
1f61dd1576 Log update validation exception messages before throwing, so user can see them before they bubble up (#2180) 2016-09-02 09:19:11 -07:00
Adlai Holler
33a680255c [ASDisplayNode] Add Convenience Interface State Accessors (#2168)
* Finish renaming fetchData range, add convenience accessors

* Update example

* Update new tests
2016-09-01 16:44:16 -07:00
Adlai Holler
5e3627a9cd [ASTextNode] Actually deprecate attributedString property (#2151) 2016-09-01 16:43:03 -07:00
Michael Schneider
f8e135a1be Add old transition API back but allow call from background thread (#2135) 2016-09-01 16:09:59 -07:00
Michael Schneider
7ef6c0ff2c Fix using ASDisplayNodePerformBlockOnEveryNode if node is loaded and has shouldRasterizeDescendants enabled (#2179)
We don't call the block on every subnode if the node that is passed in ASDisplayNodePerformBlockOnEveryNode has shouldRasterizeDescendants enabled as it tries to iterate through the sublayer hierarchy, but there are no sublayers
2016-09-01 12:04:21 -07:00
Adlai Holler
6db9bf39f1 Turn on collection update validation by default (#2174) 2016-08-31 22:20:23 -07:00
Garrett Moon
0c5288d033 [ASDisplayNode] Dealloc _pendingViewState if range managed (#2155)
* Dealloc _pendingViewState if range managed

_ASPendingState objects can add up very quickly when adding
many nodes. This is especially an issue in large collection views
and table views. This needs to be weighed against the cost of
reallocing a _ASPendingState. So in range managed nodes we
delete the pending state, otherwise we just clear it.

* Adlai's comments
2016-08-31 16:47:10 -07:00
Michael Schneider
027358fc6b [Layout] Automatic measure pass in layout pass if not happened before (#2163)
* Automatic measure pass in layout pass if not happened before

If no measure pass happened or the bounds changed between layout passes we manually trigger a measurement pass for the node using a size range equal to whatever bounds were provided to the node

* Add test method that ensures that on a second layout pass with same bounds, layoutSpecThatFits: / layoutSpecBlock is not called
2016-08-31 16:45:02 -07:00
Adlai Holler
ea4d88e053 Skip ASTextNodePerformanceTests in Test Action (#2173) 2016-08-31 16:10:27 -07:00
Adlai Holler
284975ecec Fix Case Where Node Is Deallocated While Visible (#2171)
* Attempt to reproduce supplementary crash

* Get closer with supplementary issue testing

* Alright! We have a repro!

* The investigation continues

* Fixed!
2016-08-31 15:50:39 -07:00
Michael Schneider
68d6d6f5b4 [ASDisplayNode] Add documentation for range state changes and moved deprecated header to category file (#2170)
* Add documentation for range state changes and moved deprecated header to category file

* Fix self.usesImplicitHierarchyManagement not found
2016-08-31 15:39:23 -07:00
Samuel Hsiung
72b66387d0 make inline functions in ASDisplayNodeExtras.h static (#2167)
* make inline functions in ASDisplayNodeExtras.h static to fix linker errors

* use `ASDISPLAYNODE_INLINE` in place of `static inline`
2016-08-30 10:49:29 -07:00
Adlai Holler
6bf4943204 Remove unneeded display semaphore now that thread count is limited by ASAsyncTransaction (#2124) 2016-08-30 09:45:22 -07:00
Michael Schneider
1849c41b03 Add assert for ASCollectionDataSource implementing collectionView:constrainedSizeForNodeAtIndexPath: instead of ASCollectionDelegate (#2165) 2016-08-29 16:44:11 -07:00
Adlai Holler
8d86bb6db3 Relax performance test for Travis 2016-08-29 11:55:40 -07:00
Michael Schneider
ba5dc984d7 Check if subnodes where modified during layoutSpecThatFits: (#2164) 2016-08-28 16:55:42 -07:00
Adlai Holler
578ac4c48d [Unit Tests] Add Text Layout Performance Tests (#2161)
* Add single-threaded text node performance testing

* Relax test a bit
2016-08-28 16:47:03 -07:00
Michael Schneider
cf08f3a73e Add test for layout transition measurement completion block is called on main thread (#2162) 2016-08-28 15:55:55 -07:00
Adlai Holler
bab601460e Rearrange headers in ASXCTExtensions.h 2016-08-27 17:51:20 -07:00
Michael Schneider
d0c77d7965 Add ASDisplayNodeLayoutTests (#2157) 2016-08-27 17:36:08 -07:00
Adlai Holler
ff37535140 [Testing] Migrate Unit Tests to ARC (#2156)
* Migrate ASDisplayNodeTests to ARC

* Migrate ASDisplayNodeAppearanceTests to ARC

* Migrate ASDisplayLayerTests to ARC

* Migrate ASMultiplexImageNodeTests to ARC

* Address Garrett's feedback
2016-08-27 15:09:59 -07:00
Garrett Moon
645aa6f24b [ASDisplayNode] Renamed range update callbacks (#2130)
* Renamed range update callbacks

We finally settled on

didEnter/ExitDisplayState
didEnter/ExitPreloadState
didEnter/ExitVisibleState

This change is meant to unify the range update methods to relate to each
other and hopefully be a bit more self explanatory.

* Guarantee interface callbacks happen on main.

* move fetchData / clearFetchedData to default implementations

* Move deprecated methods to new deprecated category

* Don't bring in cocoapod change.

* Nits

* Capetalize
2016-08-26 20:18:38 -07:00
Adlai Holler
f542e8d458 [ASDisplayNode] If We Skipped Rendering Due to Zero-Area, Re-Render When We Get a Real Area (#2149)
* Add failing test case

* [_ASDisplayLayer] If we skipped render due to being zero-size, enqueue a render when we get a real size

* Remove pointless import
2016-08-26 15:51:49 -07:00
Garrett Moon
8032758176 Fixes a deadlock caused by walking up the heirarchy. (#2147)
* Fixes a deadlock caused by walking up the heirarchy.

* Use scope locker / unlocker and add a comment.

* Add comment about calling __setNeedsLayout without the lock.
2016-08-26 14:09:38 -07:00
Garrett Moon
e6e5c346de I wrote a bunch of code with the Mutex::Unlocker and didn't understand it. (#2150) 2016-08-26 14:07:18 -07:00