I found myself asking exactly the same questions, about how the layout process works with UILabel and how I could use this for my own views. Ultimately I didn't get further than OP, other than figuring out that UILabel.preferredMaxLayoutWidth has been set before the second call to intrinsicContentSize. Since this is a property of UILabel this all leads me to believe, whatever is happening here is internal behavior we can't make use of.
It's also very strange that calls to systemLayoutSizeFitting do not cascade down the view hierarchy. Therefore you don't get any chance to provide size information other than intrinsicContentSize which, as stated earlier, should not depend of the views frame. Not to mention that AutoLayout doesn't make use of this method at all.
The solution for me seems to go back to frame based layout...
Topic:
UI Frameworks
SubTopic:
UIKit
Tags: