179 Commits
Author SHA1 Message Date
Scott Goodson 5b9302b681 Revert "Prevent deallocation of asyncDataSource and asyncDelegate in ASCollectionView and ASTableView"
This reverts commit 3668f45286.
2016-03-22 14:38:50 -07:00
Michael Schneider 3668f45286 Prevent deallocation of asyncDataSource and asyncDelegate in ASCollectionView and ASTableView
Grab a strong reference for asyncDataSource and asyncDelegate in ASCollectionView and ASTableView before executing the range update to be sure they are not going away while executing the range update. This can happen in range updates while going back in the view controller hierarchy
2016-03-22 08:09:59 -07:00
Eric Jensen 17aebcbaba Add a space between the ? and : in ternarys 2016-03-17 10:38:51 -07:00
appleguy d9ef0922d8 Merge pull request #1354 from ejensen/cleanup
[Refactoring] Objective-C 2.0 / Modern syntax for arrays, dictionaries, numbers; logic simplification
2016-03-17 01:06:33 -07:00
appleguy 2ad9d83520 Merge pull request #1353 from ejensen/spelling
[Documentation] Correct spelling errors
2016-03-16 22:53:15 -07:00
Michael Schneider e82118e72f Add assertion for ASDisplayNode is layer backed if using ASInterfaceStateForDisplayNode 2016-03-16 16:27:08 -07:00
Michael Schneider 8d771f930a Refactor calculation of interface state based on ASDisplayNode and window 2016-03-16 13:26:17 -07:00
Michael Schneider 3b4e8d732c Improve way to detect interface state of ASCollectionView and ASTableView 2016-03-16 11:45:22 -07:00
Michael Schneider 19232ac493 Address pull request comments 2016-03-16 11:44:56 -07:00
Michael Schneider d3ba80ccfd Improvements for automatic range mode
- Only update range mode if visibility changes if the node is not range controlled
- Only change explicitly set range mode if ASRangeController becomes visible
- Return interface state for range controller in ASCollectionView and ASTableView based on if the containing node is range managed
2016-03-16 11:44:56 -07:00
Eric Jensen 33fda7ab49 - Use modern Objective-C syntax.
-  Simplify comparisons.
-  Remove dead stores.
2016-03-15 22:34:29 -07:00
Eric Jensen ddd5ff1f75 Correct spelling errors 2016-03-15 21:56:51 -07:00
Michael Schneider 13aa891ecf Improve way to go into full mode on scroll 2016-03-12 17:45:09 -08:00
Michael Schneider e4ddb7e270 Go into full range mode if a scroll happens 2016-03-12 15:44:27 -08:00
Scott Goodson ff8ffffb7b [ASCellNode] Upgrades to ASCellNodeVisibilityEvent to ensure it is always synchronized with visibilityDidChange: 2016-03-10 20:21:00 -08:00
Scott Goodson 0e460ca00a [ASRangeController] Don't bother asking UIKit for the visible index paths if view is zero-sized, as it triggers a reloadData. 2016-03-10 19:10:25 -08:00
Scott Goodson 21bebb9d29 [ASRangeController] Improvements to application state change and memory warning handling.
Introduces ASLayoutRangeModeVisibleOnly, allowing the preservation of decoded backing stores without any extra padding to
strictly minimize memory usage while supporting immediate re-display of content.  Set visible range controllers to this mode
upon app suspend / memory warning, while more aggressively clearing others to the ASLayoutRangeModeLowMemory mode.

By default, when the app is running and recieves a memory warning, we set the range mode for non-visible controllers to
ASLayoutRangeModeVisibleOnly.  This is because, unlike in the app suspend case where on app resume we can restore controllers
from LowMemory to VisibleOnly, the memory warning doesn't provide a good opportunity to do this.

A new +Beta API to control this behavior is called +setRangeModeForMemoryWarnings:, as some apps may prefer to use LowMemory
in the memory warning scenario.  For these apps, optimal user experience will require manually setting the range mode back
to some larger value as the user navigates the app, or they will encounter controllers that are temporarily blank and need
a moment to re-display their contents as they start to become visible.
2016-03-09 21:22:45 -08:00
Scott Goodson 9c0d0542dd [ASScrollDirection] Fix scroll direction interpretation after recent changes to this logic. 2016-03-07 22:50:48 -08:00
Michael Schneider aa2ae87c81 Add -waitUntilAllUpdatesAreCommitted to ASTableView and ASCollectionView
The API allows consumer of ASTableView or ASCollectionCiew to block execution of the main thread until all section and row updates are committed.
2016-03-02 19:38:14 -08:00
appleguy e82d1408d2 Merge pull request #1292 from nguyenhuy/visibility_improvements
[ASCellNode] Update visibility API to support new event types for initial visibility & invisibility (caused by VC transitions, etc)
2016-03-02 19:30:31 -08:00
Huy Nguyen c64f23725f Update ASCellNode visibility API 2016-02-29 20:26:16 -08:00
Michael Schneider 084e6f82c1 Trigger updating interfaceState for cells in case ASTableView or ASCollectionView becomes visible or invisible 2016-02-29 17:04:25 -08:00
Ethan Nagel fa4e20e874 Initialize _asyncDelegateImplementsScrollviewDidScroll so we forward scollViewDidScroll: calls 2016-02-24 11:03:06 -08:00
Scott Goodson d899f12f70 [ASCellNode] Layout delegate should not be public as it must not be reset externally.
Do not call layout delegate method before the cell node is loaded.  This can happen if
application code calls -setNeedsLayout on the cell manually, and can confuse UIKit state
because we submit an empty batch update call on the next runloop.
2016-02-20 15:24:44 -08:00
appleguy b75d6627bb Revert "Revert "Revert "[ASCollectionView / ASTableView] Optimize reloadData and reloadSection: methods.""" 2016-02-19 23:26:29 -08:00
appleguy 2b10d84a2b Revert "fix scheduling issue that causes collectionView to not animate" 2016-02-19 23:26:12 -08:00
appleguy f3300ded68 Merge pull request #1246 from Xinchi/master
[ASCellNode] Support monitoring scrollViewDidScroll events / visible amount of self
2016-02-19 22:25:10 -08:00
Max Gu 548b600504 Removing 2 unnecessary checks 2016-02-19 22:18:08 -08:00
Max Gu 115fc2b3da Adding visibility monitoring for ASTableVieww 2016-02-19 22:15:44 -08:00
Scott Goodson a1061301e0 [ASDataController] Revert the reloadData optimizations again - need to fix apps relying on prior behavior.
The optimization seems correct now, but apps like Pinterest have some core code relying on edit operation
order that is actually not permitted by UIKit (and this diff) but were tolerated previously.  We will
re-land this once we have time to adapt the code.
2016-02-19 21:31:39 -08:00
appleguy 58a3ba5e8f Revert "Revert "[ASCollectionView / ASTableView] Optimize reloadData and reloadSection: methods."" 2016-02-18 23:06:14 -08:00
appleguy 32aa333c21 Revert "[ASCollectionView / ASTableView] Optimize reloadData and reloadSection: methods." 2016-02-18 19:50:06 -08:00
appleguy 33d4c8693d Merge pull request #1171 from lkzhao/ASDataController-reload
[ASCollectionView / ASTableView] Optimize reloadData and reloadSection: methods.
2016-02-18 17:36:14 -08:00
Luke Zhao 40791dd859 optimize reload data, reload sections, & move nodes performance & logic 2016-02-18 14:44:16 -08:00
Rahul Malik 19cc368d15 In addition to allocating nodes in the background, perform that operation concurrently in ASDataController 2016-02-17 22:30:58 -08:00
Scott Goodson e1597f902a Increase default value for leadingScreensForBatching to 2.0, as 1.0 is not enough
for most network conditions / backend performance.
2016-02-16 22:19:27 -08:00
Rahul Malik 3e5daf4ccd Update data source protocols to make synchronous node creation api methods optional. 2016-02-09 22:47:43 -08:00
Michael Schneider e49a5d992c Remove unused ASCollectionViewLayoutController import 2016-02-07 15:27:15 -08:00
Michael Schneider 026761c610 Rename ASRangeControllerBeta to ASRangeController and use exclusively 2016-02-07 15:03:24 -08:00
Michael Schneider 5d474bcb1a Remove ASDisplayNode -shouldUseNewRenderingRange method and ASRangeControllerStable class 2016-02-07 15:03:23 -08:00
Rahul Malik c4f489b074 Address comments. 2016-02-04 16:56:29 -08:00
Rahul Malik 521c3fa1c1 Move ASCellNode allocation off the main thread by the addition of a node block
API in ASDataController. Move allocations and loaded node layouts to occur
during batch layout phase.
2016-02-04 10:38:59 -08:00
Huy Nguyen 19335d8c9e Add rangeMode APIs 2016-02-02 11:58:18 -08:00
Huy Nguyen 0f3f6f0dff Fix ASTableView to have None direction 2016-02-01 13:25:22 -08:00
Samuel Hsiung 39cd3afa0d [AS(Table|Collection)View] make scrollDirection transform aware 2016-01-28 16:42:46 -08:00
Levi McCallum 0e0a0f3280 Add a safety check for targetContentOffset possibly being NULL 2016-01-28 15:54:38 -08:00
Levi McCallum 6eb0521fa3 Observe decelerating scroll velocity for accurate direction reporting 2016-01-27 23:20:21 -08:00
Huy Nguyen 56c6bd681b Revert "Revert commit 83aaa46, thus bring 2e4d716 back"
This reverts commit 209425c22c.
2016-01-26 12:05:02 -08:00
Huy Nguyen 209425c22c Revert commit 83aaa46, thus bring 2e4d716 back 2016-01-24 23:38:05 -08:00
Scott Goodson 83aaa4637e Revert "ASDataController now handles reloadData more efficiently and notify its delegate once instead of a series of deletes and inserts"
This reverts commit 2e4d716e0b.

Possible issue with this commit.
2016-01-22 20:33:33 -08:00