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

时间:2012-12-19 17:19:30

标签: ios view uiviewcontroller viewdidload viewwillappear

  

可能重复:
  UIViewController returns invalid frame?

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

我们应该如何处理这两个电话?

1 个答案:

答案 0 :(得分:6)

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

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

如果您需要支持iOS 4.3,则无法使用viewWillLayoutSubviews,因为它已在5.0中添加。在这种情况下,请在viewWillAppear:

中进行布局