他のスタック オーバーフローの質問から、View Controller では、viewDidLoadメソッドを使用してサブビューを初期化し、viewWillLayoutSubviewsメソッドを使用してフレームを設定できることを理解しています。これは、View Controller インスタンス内のすべてのビューの参照を保持する必要があることを意味します (以下を参照)。これはすべてうまくいき、デバイスの回転などを処理します.
UILabel* myLabel;
- (void)viewDidLoad
{
myLabel = [[UILabel alloc] init];
[myLabel setText:@"Hello"];
}
- (void)viewWillLayoutSubviews
{
[myLabel setFrame:CGRectMake(0, 0, self.view.frame.size.width, 21)];
}
私の質問は、サブビューの複雑な階層がある場合はどうなるかということです。たとえば、UIView であるサブビューがあり、その UIView にサブビューを追加するとどうなるでしょうか (さらに深くなる可能性もあります)。viewWillLayoutSubviewsで各ビューのフレームを変更できるように、このビュー階層全体のすべてのビューへの参照を保持する必要がありますか? これが唯一の方法のようです。フレームを頻繁に変更する必要がないようにするには、コンストレイントが最善の方法ですか? この階層の管理をより管理しやすく、各カスタム ビュー内で自己完結型にするために、大量のカスタム UIView を構築するための最良の答えはありますか?
うまくいけば、これは十分に明確な質問です..事前に感謝します.