Commit Graph
4958 Commits
Author SHA1 Message Date
César Estébanez Tascón 002c2d6978 Mark ASRunLoopQueue as drained if it contains only NULLs (#558)
* Mark ASRunLoopQueue as drained if it contains only NULLs

* Update CHANGELOG.md

* Cover ASRunLoopQueue with tests

* Include PR link in CHANGELOG.md

* Replace license header of ASRunLoopQueueTests.m with correct one

* Insert a nil in _internalQueue to ensure compaction, instead of maintaining a state for _isQueueDrained
2017-09-11 13:32:25 -07:00
Huy Nguyen 7c7a4acf0e ASCollectionLayout to exclude content inset on scrollable directions from viewport size (#562) 2017-09-11 13:32:17 -07:00
Huy Nguyen fcee108af5 [ASCollectionNode][ASTableNode] Add content inset bridging property (#560)
* Add content inset bridging property to table and collection nodes

* Fix CHANGELOG

* Fix typo

* Minor fixes
2017-09-11 19:20:32 +01:00
Garrett Moon 3c77d4a5da Adds support for specifying a quality indexed array of URLs (#557)
* Add support for downloading a set of URLs on ASNetworkImageNode

* Should be building now;

* Remove old unused code

* Add a changelog message

* Bump PINRemoteImage

* Huy's comments
2017-09-11 11:12:45 -07:00
Huy Nguyen 786963c6a9 [ASDisplayNode] Deprecate -displayWillStart in favor of -displayWillStartAsynchronously: (#536)
* Deprecate -[ASDisplayNode displayWillStart] in favor of -displayWillStartAsynchronously:

* Minor change

* Fix CHANGELOG

* Update CHANGELOG.md

* Update CHANGELOG.md
2017-09-08 18:04:43 +01:00
Huy Nguyen d4b1f625aa [Gallery layout] Include the caller in properties providing methods (#533)
* Include the caller in ASCollectionGalleryLayoutPropertiesProviding's methods

* Update CHANGELOG.md
2017-09-08 17:05:06 +01:00
Adlai Holler 53e99cc762 Make ASWeakMapEntry Value Atomic (#555)
* Make ASWeakMapEntry value atomic

* Increment changelog

* Go a little nuts

* Update CHANGELOG.md
2017-09-08 15:17:35 +01:00
Eric Scheers 0bd18c8522 [ASDisplayNode] Notify rasterized subnodes that render pass has completed (#532)
* Notify rasterized subsides that render pass has completed

* Traverse entire subnode tree notifying all subnodes

* Add entry in changelog

* Retrieve rasterizesSubtree flag while holding instance lock

* Balance display delegate calls for rasterized subnodes
2017-09-07 21:05:30 +01:00
Huy Nguyen 4ba6f451f6 [Cleanup] Remove deprecated APIs (#529)
* Remove preferredFrameSize

* Remove -measure:

* Remove -measureWithSizeRange:

* Remove ASLayoutable

* Remove .name

* Remove deprecated style forwardings

That includes following properties that are declared on ASDisplayNode and ASLayoutSpec: spacingBefore, spacingAfter, flexGrow, flexShrink, flexBasis, alignSelf, ascender, descender, sizeRange and layoutPosition.

* Remove usesImplicitHierarchyManagement

* Remove deprecated range update callbacks:
-visibilityDidChange:
-visibleStateDidChange:
-displayStateDidChange:
-loadStateDidChange:

* Remove -clearFetchedData

* Remove -cancelLayoutTransitionsInProgress

* Remve ASDisplayNode+Deprecated.h

* Remove ASLayoutRangeTypeRender and ASLayoutRangeTypeFetchData

* Remove -[ASTableView clearContents]

* Remove reloadDataImmediately

* Remove ASStaticLayoutSpec

* Remove ASDimensionDeprecated

* Remove optional -pagerNode:constrainedSizeForNodeAtIndex: delegate method in ASPagerDelegate

* Remove suppressesInvalidCollectionUpdateExceptions

* Remove -[ASCollectionViewLayoutInspector initWithCollectionView]

* Remove ASVideoPlayerNode.loadAssetWhenNodeBecomesVisible

* Update CHANGELOG

* Update license of ASLayoutSpecTests.m

* Update examples/PagerNode

* Remove ASEnvironmentTraitCollection

* Remove -ASViewController.nodeConstrainedSize

* More on removing ASLayoutable
2017-09-07 19:25:42 +01:00
Yan S 19a9d29aa8 SEP-491 prerequisite: add textViewShouldBeginEditing: to ASEditableTextNodeDelegate (#535)
* SEP-491 prerequisite: add textViewShouldBeginEditing: to ASEditableTextNodeDelegate

* - added entry to CHANGELOG.md, addressed nit
2017-08-28 19:49:41 +01:00
appleguy ccc5786032 [ASCollectionNode] Add -isProcessingUpdates and -onDidFinishProcessingUpdates: APIs. (#522)
* [ASCollectionNode] Add -isProcessingUpdates and -onDidFinishProcessingUpdates: APIs.

Over time, there have actually been a lot of legitimate uses for an API like this.
In fact, I'm not quite sure what has held us back from adding one!

I believe that at least some portion of -wait calls (even if less than 50%) could be
replaced with -onDidFinishProcessingUpdates:, which could potentially improve the
performance of applications using -wait by a significant amount.

Please take a close look at implementation correctness. Although I'm in a bit of a
rush, I'm aiming to make this properly documented and added a basic test -- but it
could certainly use some more detailed testing as a followup.

* [ASCollectionNode] Improvements to the implementation of -isProcessingUpdates and -onDidFinishProcessingUpdates:

* Add lock to ASMainSerialQueue count method.

* [ASTableNode] Implement -isProcessingUpdates and -onDidFinishProcessingUpdates:. Rename -waitUntil to consistent naming.
2017-08-23 11:16:21 +01:00
Adlai Holler 16ce3c9a33 Add a function to disable all logging at runtime (#528)
* Implement a runtime disable for all logging

* Update the changelog

* Inline the function

* Flip the scrip
2017-08-22 14:48:42 -07:00
Huy Nguyen 884a4f56f1 [Table and collection views] Consider content inset when calculating (default) element size range (#525)
* Table and collection views to consider their content inset when calculating element size range

* Update CHANGELOG

* Address comments

* -[ASPagerNode currentPageIndex] to use pageSize instead of bounds

* Update documentation in ASPagerNode

* Minor change
2017-08-22 14:14:01 -07:00
Phil Larson 359b5f0b5b ASImageNode+AnimatedImage playbackReadyCallback retain cycle (#520)
* ASImageNode+AnimatedImage playbackReadyCallback causes strong retain cycle

* Add CHANGELOG entry for #520
2017-08-21 12:49:11 +01:00
appleguy 5cf05f3c17 [Accessibility] Add .isAccessibilityContainer property, allowing automatic aggregation of children's a11y labels. (#468)
After consulting Apple documentation and working with some a11y experts,
we've found that aggregating objects that have a11y labels but are not
themselves interactable is significantly preferred for these users.

It makes it much quicker to navigate scrolling content if VoiceOver only
stops to select entire cells, and then allows drilling down into the cell
to select individual components. This implementation achieves that behavior.

We should consider enabling isAccessibilityContainer by default on ASCellNode.
This would be an improvement for 95% of a11y use cases. Aggregation can be
enabled or disabled on any node.
2017-08-20 13:17:05 -07:00
appleguy 65fabf49d7 [ASImageNode] Enable .clipsToBounds by default (fix .cornerRadius, GIFs overflow). (#466)
* [ASImageNode] Enable .clipsToBounds by default (fix .cornerRadius, GIFs overflow).

We've seen a number of bugs reported over time that .cornerRadius didn't work on
ASNetworkImageNode. This wasn't much of a concern because cornerRadius is very
inefficient anyway, and there are better ways to round corners, but it should
certainly work.

It turns out that clipsToBounds has been off for images, and this ultimately
was behind another issue recently seen wehre decoded GIFs would spill outside
the bounds area to overlap nearby content.

Although there is some risk of behavior change from this, I think the risk
is fairly small, and in most cases it will probably fix behaviors in a way
that doesn't cause problems for the app.

We should consider if this property should be on for all ASDisplayNodes,
but for now it would be a great step to be confident it's on for all
ASImageNodes.

* Update changelog for ImageNode Clipping.
2017-08-20 03:17:46 -07:00
Ofer Morag 1204737330 Update corner-rounding.md (#482)
* Update corner-rounding.md

If I understand right, both Precomposited corners techniques uses `[path clip]`, right? If so, I think it will be better to move it to the general description of the section, as currently it seems as only the second option uses `[path clip]`.

* Update corner-rounding.md

Improved positioning.

* Update corner-rounding.md

Syntax consistency: Changed `off-screen` to `offscreen`, as both syntaxes currently appears in the text.
2017-08-20 01:46:02 -07:00
Huy Nguyen cae9517ebe BuildKite to ignore all markdown files (#517) 2017-08-17 10:02:11 -07:00
Huy Nguyen 5e13ebac8b ASCollectionLayout improvements (#513)
- During the first layout calculation, measure more than just elements in the visible viewport.
- Remove unnecessary params in `-[ASCollectionLayoutState getAndRemoveUnmeasuredLayoutAttributesPageTableInRect`.]
2017-08-17 15:30:34 +01:00
Huy Nguyen 46e949460a ASCollectionLayout to return a zero content size if its state is unavailable (#509) 2017-08-17 14:43:54 +01:00
Adlai Holler b2d1ed95ef Update changelog and podspec for 2.4 (#512) 2017-08-15 13:37:06 -07:00
Adlai Holler 42b5633bcc Avoid re-entrant call to self.view when applying initial pending state (#510)
* Avoid re-entrant call to .view

* Increment the changelog
2017-08-15 08:04:12 -07:00
Huy Nguyen afeb25a6b4 [examples/ASCollectionView] Register supplementary kinds (#508) 2017-08-14 16:52:45 +01:00
Max Wang a929950d2c Fix SIMULATE_WEB_RESPONSE not imported (#450)
* fix SIMULATE_WEB_RESPONSE not imported (Reported in #449).

* changes per review

* Update license of ViewController.m
2017-08-14 16:31:52 +01:00
Jakub Kašpar 6b3e2ba4e0 [ASCoreAnimationExtras] Update documentation for resizbale images #trivial (#492)
* Update documentation for resizbale images

* Add documentation to ASDisplayNodeSetResizableContents
2017-08-12 08:03:42 -07:00
Adlai Holler f58b0b3cd3 Rename the field again to nodeModel (#504)
* Rename the field to nodeModel

* A few more instances

* Fix method name
2017-08-10 16:11:12 -07:00
Huy Nguyen dc3be352af [ASTableNode][ASCollectionNode] Add content offset bridging property (#460)
- Add content offset bridging property to table and collection node
- And use it in `ASCollectionLayout` to avoid measuring unrelated nodes during the first layout.
- Update CHANGELOG and highlight deprecated methods
2017-08-10 17:47:26 +01:00
Huy Nguyen fdc1f0468c Improvements in ASCollectionGalleryLayoutDelegate (#496)
* Improvements in ASCollectionGalleryLayoutDelegate
- It now can handle section inset, as well as interitem and line spacings
- Other small changes

* Fix build failure and update file licenses

* Update CHANGELOG

* Minor change

* Another assertion on scrollable directions of gallery layout delegate
2017-08-08 19:11:40 +01:00
Adlai Holler d2adb8f126 Rename -[ASCellNode viewModel] to -[ASCellNode nodeViewModel] to avoid collisions (#499)
* Rename -[ASCellNode viewModel] -> -[ASCellNode nodeViewModel] to avoid breaking existing code

* Update test

* Update the changelog
2017-08-07 11:04:31 -07:00
nixzhu 49b1f82c5a Fixed typo UIKIt (#497) 2017-08-07 11:01:12 +01:00
Huy Nguyen 69a915356d [ASStackLayoutSpec] Fix interitem spacing not being reset on new lines and add snapshot tests #trivial (#491)
* Add snapshot tests for interitem and interline spacings of stack spec

* Improve comment

* Make sure item spacings are properly considered and reset on new lines, snapshot tests included
2017-08-06 13:20:33 +01:00
Christian Selig 10efa31abd iOS 11 UITableView automatic height estimation fix (#485)
* Add iOS 11 checks.

* Negate iOS 11 automatic table height estimatation

* Negate iOS 11 automatic estimated table row heights

* Add note about iOS 11 estimated height behavior
2017-08-04 18:06:30 +01:00
Huy Nguyen 3c6b836571 Make sure _locked_constrainedSizeForLayoutPass is called with the lock held (#488) 2017-08-04 16:24:05 +01:00
Huy Nguyen 27abc771e0 [Layout Transition] Avoid calling didComplete method if pending layout transition is nil (#490)
* Avoid calling didComplete method if pending layout transition is nil

* Update CHANGELOG
2017-08-04 16:22:39 +01:00
Jakub Kašpar bfc137d935 [Showcase] Update showcase - add blog post link to ClassDojo icon #trivial (#493)
* Update showcase - add blog post link to ClassDojo icon

* Revert "Update showcase - add blog post link to ClassDojo icon"

This reverts commit 6b180f1191.

* Add link to ClassDojo icon
2017-08-04 07:09:13 -07:00
Flo ba08ae1318 [ASStackLayoutSpec] Flex wrap fix and lineSpacing property (#472)
* ASStackUnpositionedLayout: Take spacing into account when laying out a wrapped stack.

* ASStackLayoutSpec: Add the lineSpacing property.

* Update CHANGELOG.md.
2017-08-03 11:24:08 +01:00
Ofer Morag 0f9645c5a2 Update scroll-node.md (#484)
* Update scroll-node.md

Regarding the last sentence: “As you can see, the `scrollNode`'s underlying view is a `ASScrollNode`.”:
1. I think that `ASScrollNode` should be replaced with `UIScrollView`.
2. But — not sure how can it be seen from this example...

* Update scroll-node.md

Removed the last sentence, as it did not make sense, and probably left there from previous editions.
2017-07-31 10:37:28 -07:00
Ofer Morag 858fa11ac3 Update adoption-guide-2-0-beta1.md (#483)
* Update adoption-guide-2-0-beta1.md

- Removed the “number” looks like a mistake
- Changed `"` to `“` to match the ending sign

* Update adoption-guide-2-0-beta1.md

Changing both sign to non-smart
2017-07-28 14:44:16 -07:00
Ofer Morag c2f6b90c9d Update subclassing.md (#479)
* Update subclassing.md

* Update subclassing.md

Lowered-case the "i".
2017-07-28 09:36:49 -07:00
appleguy 9a14f279aa [ASNodeController] Add -nodeDidLayout callback. Allow switching retain behavior at runtime. (#470)
With these changes, I'd also like to propose that we move ASNodeController
out of Beta (renaming the files without +Beta). Let me know what you think!

Because we don't support ASNodeController directly in ASCV / ASTV, it is still
important to allow flipping the ownership in certain cases (in particular, for
root CellNodeController objects that should follow the lifecycle of the
ASCellNode rather than owning the ASCellNode).
2017-07-27 01:07:53 -07:00
Adlai Holler 01c14f0fc2 Invalidate layouts more aggressively when transitioning with animation (#476)
* Be more aggressive at invalidating layouts during transitions, add a debug method, fix some build errors when verbose logging

* Add a changelog entry
2017-07-26 22:27:58 -07:00
Ofer Morag 7b054582cd Update image-modification-block.md (#474)
* Update image-modification-block.md

Just some minor proposals for improvements:
- Removed white spaces, which caused the first line in the image modification block to be shown a bit "messy"
- Using the Null coalescing operator in the following line

* Update image-modification-block.md

Now, with the second change as well.
2017-07-25 14:41:35 -07:00
Huy Nguyen 8b397cd04e [Layout transition] Invalidate calculated layout if transitioning using the same size range (#464)
* Invalidate the calculated layout transitioning using the same size range
- It's possible that -transitionLayoutWithSizeRange: can be called with the same size range used for previous layout passes. In that case, it's necessary to invalidate the current layout to avoid it being reused later on in the process.

* Fix CHANGELOG
2017-07-24 11:00:43 -07:00
Huy Nguyen 01715f09d8 [ASDisplayNode] Fix infinite layout loop (#455)
* Fix infinite layout loop

- The problem will occur if a node does either of the followings:
1. Keeps using a stale pending layout over a calculated layout
2. Doesn't update the next layout's version after calling _setNeedsLayoutFromAbove.

* Update CHANGELOG
2017-07-18 19:44:27 +00:00
Huy Nguyen 6880ed4aa9 Add ASPagerNode+Beta to umbrella header (#454) 2017-07-18 17:05:59 +00:00
Huy Nguyen 78c133e44c [ASCollectionLayout] Add ASCollectionGalleryLayoutSizeProviding (#451)
* Add ASCollectionGalleryLayoutSizeProviding
- This allows users to return different sizes based on certain conditions, such as the collection node's bounds or grid constants.
- ASPagerNode will also act as a size provider to ensure all pages have an up-to-date size that is its bounds.

* Update CHANGELOG

* ASPagerNode to use gallery layout delegate if told to
2017-07-18 10:08:12 +00:00
Huy Nguyen 7af8f91e62 Remove unused flow layout reference in ASPagerNode (#452) 2017-07-17 21:01:00 +00:00
Huy Nguyen eb5bde0791 [ASDataController ] Merge willUpdateWithChangeSet and didUpdateWithChangeSet delegate methods #trivial (#445)
* Merge willUpdateWithChangeSet and didUpdateWithChangeSet delegate methods into one
- After #420, there is no change occurs between those 2 methods. Having them separately doesn't achieve anything and can cause confusions.

* Minor change
2017-07-17 11:43:31 +00:00
Huy Nguyen 292dc3c70b [ASDataController] Clean up (#443)
* Clean up ASDataController
- Parameters passed to ASDataControllerCompletionBlock are no longer used. Remove them.
- The value returned by _allocateNodesFromElements:andLayout:completion is not used. Remove it.
- Elements are not allocated and measured in batches anymore. Remove the code that does batch allocation.
- Remove RETURN_IF_NO_DATASOURCE. It's used only once and is not worth it.

* Remove +parallelProcessorCount

* Update CHANGELOG
2017-07-17 11:42:52 +00:00
Huy Nguyen 7302816b2f [ASDataController] Avoid asking for size ranges of soon-to-be-delete elements during relayouts (#442)
* ASDataController to avoid asking for size ranges of soon-to-be-deleted elements during relayouts

* Remove outdated TODOs
2017-07-17 11:37:40 +00:00