layoutSubviews はいつ呼び出されますか? 質問する

layoutSubviews はいつ呼び出されますか? 質問する

layoutSubviewアニメーション中にメッセージを受信しないカスタム ビューがあります。

画面いっぱいに表示されるビューがあります。画面の下部にカスタム サブビューがあり、ナビゲーション バーの高さを変更すると、Interface Builder で正しくサイズ変更されます。layoutSubviewsビューの作成時に が呼び出されますが、それ以降は呼び出されません。サブビューは正しくレイアウトされています。呼び出し中のステータス バーをオフにすると、メインlayoutSubviewsビューがサイズ変更をアニメーション化しているにもかかわらず、サブビューはまったく呼び出されません。

実際にどのような状況でlayoutSubviews呼び出されるのでしょうか?

カスタム ビューにautoresizesSubviews設定しました。また、Interface Builder では、上部と下部の支柱と垂直矢印を設定しました。NO


パズルのもう 1 つの部分は、ウィンドウをキーにする必要があることです。

[window makeKeyAndVisible];

それ以外の場合、サブビューは自動的にサイズ変更されません。

ベストアンサー1

私も同じような質問がありましたが、その答え(またはネット上で見つけた答え)に満足できなかったので、実際に試してみたところ、次のような結果が得られました。

  • initlayoutSubviews呼び出されることはありません(当たり前ですが)
  • addSubview:layoutSubviews追加されるビュー、追加先のビュー(ターゲットビュー)、およびターゲットのすべてのサブビューで呼び出されます。
  • ビューは、フレームのサイズパラメータが異なる場合にのみ、フレームが設定されているビューをsetFrameインテリジェントに呼び出します。layoutSubviews
  • UIScrollViewをスクロールすると、layoutSubviewsscrollViewとそのスーパービューでが呼び出されます。
  • デバイスを回転すると、layoutSubview親ビュー(応答するviewControllersプライマリビュー)のみが呼び出されます。
  • ビューのサイズを変更すると、layoutSubviewsそのスーパービューが呼び出されます (重要: 固有のコンテンツ サイズを持つビューは、サイズを決定するコンテンツが変更されるとサイズが変更されます。たとえば、UILabel のテキストを更新すると、固有のコンテンツ サイズが更新され、layoutSubviewsスーパービューが呼び出されます)

私の結果 -http://blog.logichigh.com/2011/03/16/when-does-layoutsubviews-get-called/

おすすめ記事