viewDidLoad和viewWillAppear中的不同子视图布局

pee*_*onn 5 view uiviewcontroller viewdidload viewwillappear ios

可能重复:
UIViewController返回无效帧?

调试时我注意到在viewDidLoad调用时我的视图框架origin=(x=0, y=20) size=(width=320, height=460)不准确.在viewWillAppear通话中它设置正确:origin=(x=0, y=0) size=(width=320, height=416)考虑导航栏高度.我的子视图布局取决于根视图,但我不希望每次出现视图时都设置它们.

我们该怎么处理这两个电话?

rma*_*ddy 6

处理视图布局的适当位置在UIViewController viewWillLayoutSubviews方法中.只要视图控制器的视图的大小(例如首次显示和旋转时),就会调用此方法.

正如您所看到的,视图控制器的视图在viewDidLoad调用时尚未完全调整大小.

如果你需要支持iOS 4.3,那么你就无法使用,viewWillLayoutSubviews因为它是在5.0中添加的.在这种情况下,请进行布局viewWillAppear:.