-sizeThatFits:メソッドを使用して、superViewでオーバーライドする必要があることを知っています。しかし、私はこの方法で何をすべきですか?ビューの新しいサイズのみを計算する必要がありますか、それともサブビューにメッセージを送信する必要がありますか?たぶん-sizeThatFits:と-sizeToFit:メッセージ?そして、フレームのサイズを変更するときが来たと、いつ、どのようにスーパービューに「言う」必要がありますか?
1 に答える
あなたの質問の最初の部分に関して:あなたの-sizeThatFits:
実装は決して-sizeToFit:
サブビューを要求するべきではありません。前者はビューのサイズを(まったく変更せずに)計算する方法ですが、後者は実際にビューのサイズを変更します。
-sizeThatFits:
ビューのサイズ計算に役立つ場合は、呼び出しを子ビューに確実に転送できます。
質問の2番目の部分については、通常、ビューのサイズを変更するタイミングをスーパービューに指示するべきではありません。逆の場合があります。最初に、コントローラーまたは親ビューが子ビューのサイズ変更を試行するものである必要があります。
Appleのドキュメントから:sizeThatFits - Implement this method if you want your view to have a different default size than it normally would during resizing operations. For example, you might use this method to prevent your view from shrinking to the point where subviews cannot be displayed correctly.
ドキュメントが言っている-sizeThatFits:
ことは、実装が特定のサイズ未満のフレームを返さない場合、そのサイズは基本的にサイズ変更操作中にビューの最小サイズになるということです。
PS:あなたの質問のトピックでは、ビューのコンテンツに合わせてビューのサイズを変更する方法を尋ねているので、その目的にはsizeToFitを使用する必要があります。カスタムビューには、そのメソッドを自分で実装する必要があります。