UIViewControllerのライフサイクル #iOS - Qiita
4.ビューのlayoutSubviewsメソッドが呼び出されます。 ビュー階層を構築するために自動レイアウト機能が使われていれば、次の手順でレイアウト制約を更新できます。
Searching…
4.ビューのlayoutSubviewsメソッドが呼び出されます。 ビュー階層を構築するために自動レイアウト機能が使われていれば、次の手順でレイアウト制約を更新できます。
これを記述して、再度ViewのlayoutSubviewsをコールさせる必要があります。 そうしないと変更したい値が反映されないので注意です。
この記事では、 setNeedsLayout, layoutIfNeeded, layoutSubviews, updateConstraints, setNeedsUpdateConstraints, updateConstraintsIfNeeded について調べて、詳細は省いて噛み砕いて説明します。
You receive a LayoutSubviews input to your implementations of Layout protocol methods, like placeSubviews(in:proposal:subviews:cache:) and sizeThatFits(proposal:subviews:cache:).
SwiftのUIKitのUIViewを明示的に再描画するためにはsetNeedsDisplayメソッドを使用します。 似たような役割を持つsetNeedsLayout、layoutIfNeeded、layoutSubviewsの動作の違いや使い方なども併せてまとめていきます。
layoutSubviews() はビューのレイアウトが更新されるたびに呼ばれるため、デバイスの回転や親ビューのサイズ変更にも対応できます。
・ What is the relationship between UIView's setNeedsLayout, layoutIfNeeded and layoutSubviews? ・ UIView が持つ描画・レイアウト更新系のメソッドメモ
layoutSubviews でレイアウト調整をおこなう方法は UIScrollView で特に威力を発揮するのですが、layoutSubviews の呼び出し頻度も高いです。 呼び出し頻度が高いのでこのなかで重い処理は本来の目的とは違う処理を中に書いてしまうと動きが悪くなってしまいます。
Layout protocol methods receive a LayoutSubviews collection that contains exactly one proxy for each of the subviews arranged by your container. Use a proxy to get information about the associated subview, like its di...
まとめると、layoutSubviewsメソッドはビューのレイアウトが変更された時に、カスタムレイアウトを行う仕組みで、このメソッドをオーバライドすることで、特定のレイアウトの要求を実現できます。