[iOS] Improve background layer frame mapping performance #24848
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Important
This PR contains a breaking change: it removes two public utility methods:
Description of Change
Using https://github.com/davidortinau/AllTheLists app, and scrolling through collection view with
Border
inside we can clearly see that a good amount of time is spent inUpdateBackgroundLayerFrame
which is needed to sync the sublayer with theUIView.Layer
.This has an impact on both
MappingFrame
andContentView.LayoutSubviews
:Which translated to these timings
This PR gets rid of all mapping frame code and simply adds an observer on the sublayer.
As a result we get a lot of improvement (80%):
While the new observer is super fast
Issues Fixed
Fixes #24847