See this post: UIView / CALayer: transform layoutSubviews triggers in view mode
Apple answered me through TSI:
Why do I see this behavior? is this inconsistency or do I not understand some basic concepts?
The view will be marked for layout whenever the system feels that something has changed, which requires the view to recalculate the scope of its subzones. This can happen more often than you expected, and it is when the system selects the presentation flag, since the required layout is an implementation detail.
why does it cascade up the hierarchy of representations?
Typically, changing the geometric property of a view (or layer) will cause the layout invalidation cascade up the view hierarchy, because parent views can have Auto Layout constraints with a modified child. Note that the automatic layout is active in some form, regardless of whether you explicitly enabled it.
how can i avoid the supervisor in layoutSubviews every time i change the transform?
This behavior cannot be circumvented. This is part of the UIKit internal accounting documentation, which is necessary to ensure consistency in the presentation hierarchy.
source share