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似乎被调用。