Why is viewDidLayoutSubviews called multiple times?

LoadView is only called once: when the view needs to be loaded.

LayoutSubviews, however, is called once per run loop on any view that has had setNeedsLayout or setNeedsDisplayInRect called on it - this includes whenever a subview has been added to the view, scrolling, resizing, etc.


The best thing to do and this has served me well - is to get in to the habit of adding a log or print statement to methods of which you are unsure

I use this ->

print("Hello From \(NSStringFromSelector(#function))")

or this if inside a View Subclass

Swift.print("Hello From \(NSStringFromSelector(#function))")

It will print the method when it is being called.