2011-08-04 8 views
2

私はUIViewController内で使用されるカスタムUIViewを持っています。カスタムビューにはカスタム/プログラムレイアウトが必要です。私が現在やっていることは、コントローラ "viewDidAppear"の中から、 "layoutThisView"という場所に配置したカスタムビューメソッドを呼び出していることです。これはうまくいくようです。カスタムビューのカスタムビューでのサブビューレイアウト、またはlayoutSubviews/layoutIfNeededの使用

質問 - このアプローチの代わりにUIView layoutSubviews/layoutIfNeededメソッドを使用する必要がありますか?これはより良いアプローチとなるでしょうか?

答えて

4

layoutSubviewsを使用する方が良いでしょう。ビューが何らかの理由でレイアウトを必要とするときはいつでも、Cocoa Touchは自動的にこのメッセージを送信します - サイズ変更、方向変更など。一般に、できる限りどこでもフレームワークを使いましょう。

注意:私はUIScrollViewをスクロールすると、含まれているビューではlayoutSubviewsが呼び出される可能性があるので、そのような場合に特定のタイプのレイアウトを実行する前にビューの境界が実際に変更されているか確認してください。私はコメントを投稿していただければ幸いですが、それを明確にすることができます - それは私が徹底的にテストしたものではなく、実行したものです。

+0

私はカスタムUIViewでlayoutSubviewメソッドを実装し、親UIControllerViewはこのメソッドをいつ呼び出すかを自動的に認識しますか? – Greg

+0

はい、まさに、私はそれがウィンドウとビュー階層によって扇動されていると信じていますが。 –

関連する問題