iOS各个回调函数的执行顺序

参照一位网友的blog:http://www.cnblogs.com/dsxniubility/p/4322525.html

一般的执行顺序没什么问题,主要是view的布局时候需要特别注意,看是在哪个回调函数里才能得到正确的布局,在UIView类里的话,是在layoutSubviews方法里,如果是这个UIVIew所对应的UIVIewController类里的话,那就是viewDidLayoutSubviews方法了。

但是一定要注意的是,UIVIewController.viewDidLayoutSubviews这个方法是在所管理的UIView布局完后就调用了,但是这时候UIView里的SubView的并还没有布局好!!!(苹果这是几个意思???)

以上只是启动阶段回调函数的执行顺序。

根据国外友人的一篇blog:http://kevindew.me/post/18579273258/where-to-progmatically-lay-out-views-in-ios-5-and

当启动完成后,如果设备进行旋转的话,会调用以下方法

[UIViewController willRotateToInterfaceOrientation:duration:]
[UIViewController viewWillLayoutSubviews]
[UIView layoutSubviews]
[UIViewController viewDidLayoutSubviews]
[UIViewController willAnimateRotationToInterfaceOrientation:duration:]
[UIViewController shouldAutorotateToInterfaceOrientation:]
[UIViewController didRotateFromInterfaceOrientation:]

当呈现一个新的UIViewController时

扫描二维码关注公众号,回复: 484791 查看本文章

[UIViewController loadView]
[UIViewController viewDidLoad]
[UIViewController viewWillAppear:]
[UIViewController shouldAutorotateToInterfaceOrientation:]
[UIViewController viewWillLayoutSubviews]
[UIView layoutSubviews]
[UIViewController viewDidLayoutSubviews]
[UIViewController viewDidAppear:]

当呈现的UIViewController关闭时

[UIViewController viewWillAppear:] - Note correct bounds here
[UIViewController viewWillLayoutSubviews]
[UIView layoutSubviews]
[UIViewController viewDidLayoutSubviews]
[UIViewController viewDidAppear:]

猜你喜欢

转载自weiqingfei.iteye.com/blog/2214974
今日推荐