在调试我注意到,在viewDidLoad
打电话给我的观点框架origin=(x=0, y=20) size=(width=320, height=460)
这是不准确的。在viewWillAppear
称它设置正确:origin=(x=0, y=0) size=(width=320, height=416)
考虑导航栏高度。 我的子视图布局取决于根视图,但我不想在每次显示视图时设置它们。
我们应该如何处理这两个电话?
在调试我注意到,在viewDidLoad
打电话给我的观点框架origin=(x=0, y=20) size=(width=320, height=460)
这是不准确的。在viewWillAppear
称它设置正确:origin=(x=0, y=0) size=(width=320, height=416)
考虑导航栏高度。 我的子视图布局取决于根视图,但我不想在每次显示视图时设置它们。
我们应该如何处理这两个电话?
处理视图布局的适当位置在UIViewController viewWillLayoutSubviews
方法中。只要视图控制器视图的大小被调用,比如第一次显示和旋转时就调用它。
正如你所看到的,当调用viewDidLoad
时,视图控制器的视图还没有被完全调整大小。
如果您需要支持iOS 4.3,那么您不能使用viewWillLayoutSubviews
,因为它已在5.0中添加。在这种情况下,请执行viewWillAppear:
中的布局。
应该注意的是-viewWillAppear可以在视图框架被设置并且窗口已经完成定向之前被调用。如果你需要iOS 4,你需要等待-viewDidAppear被调用。 –
与你一样处理它们。在-viewWillAppear中查看设置,因为这是占用导航栏高度的那个,然后在-viewDidLoad中进行初始化。 – CodaFi