のドキュメントによると-[UIView setNeedsLayout]
:
このメソッドは即時の更新を強制するのではなく、代わりに次の更新サイクルを待機するため、これらのビューのいずれかが更新される前に複数のビューのレイアウトを無効にするために使用できます。この動作により、すべてのレイアウト更新を 1 つの更新サイクルに統合でき、通常はパフォーマンスが向上します。
素晴らしいですね - しかし、 をsetNeedsLayout
呼び出さずに使用するlayoutIfNeeded
と、コントロールがレイアウトされていないことがわかります。コントロールが次に表示される前に「更新サイクル」が発生することを期待していましたが、そうではないと思います。では、「更新サイクル」とは何ですか?いつ起こりますか?