Ios viewDidLoad和VIEW中将显示不同的子视图布局

Ios viewDidLoad和VIEW中将显示不同的子视图布局,ios,view,uiviewcontroller,viewdidload,viewwillappear,Ios,View,Uiviewcontroller,Viewdidload,Viewwillappear,可能重复: 在调试时,我注意到在viewDidLoad调用中,我的视图框是origin=(x=0,y=20)size=(width=320,height=460),这是不准确的。在视图中,将显示调用设置正确:原点=(x=0,y=0)大小=(宽度=320,高度=416)考虑导航栏高度。 我的子视图布局取决于根视图,但我不希望每次视图出现时都设置它们 我们应该如何处理这两个调用?处理视图布局的正确位置是在UIViewController viewWillLayoutSubviews方法中。无论何时

可能重复:

在调试时,我注意到在
viewDidLoad
调用中,我的视图框是
origin=(x=0,y=20)size=(width=320,height=460)
,这是不准确的。在
视图中,将显示
调用设置正确:
原点=(x=0,y=0)大小=(宽度=320,高度=416)
考虑导航栏高度。 我的子视图布局取决于根视图,但我不希望每次视图出现时都设置它们


我们应该如何处理这两个调用?

处理视图布局的正确位置是在
UIViewController viewWillLayoutSubviews
方法中。无论何时调整视图控制器视图的大小(例如首次显示和旋转视图时),都会调用此函数

如您所见,调用
viewDidLoad
时,视图控制器的视图尚未完全调整大小


如果您需要支持iOS 4.3,则不能使用
viewWillLayoutSubviews
,因为它是在5.0中添加的。在这种情况下,是否在
视图中进行布局将显示:

像以前一样处理它们。在-VIEWWILLEASE中进行视图设置,因为这是导航栏高度的原因,然后在-viewDidLoad中进行初始化。应注意的是,在设置视图框架和窗口完成自身定向之前,可能会调用-VIEWWILLEASE。如果在iOS 4中需要它,则需要等待-viewdid似乎被调用。