UIView生命周期

UIView生命周期

当View 以及 View的SubView添加到VC上的时候 流程如下:

首先进行的是VC的initNib->loadView->ViewdidLoad

然后才是View操作:view的init ->subview的willMoveToSuperView ->subView的didMoveToSuperView ->view的didAddSubView ->view的willMoveToSuperView ->view的didMoveToSuperView 

当view以及subView的moveToSuperView操作进行完毕会调用VC的viewWillAppear

然后这个时候才将进行window的操作:首先是将view的willMoveToWindow->subView的willMoveToWindow->subView的didMoveToWindow ->view的didMoveToWindow

当所有的view以及subView都已经在window上展示后

会调用VC的:viewWillLayoutSubViews

调用view的layoutSubViews

在调用subView的layoutSubViews

最后调用VC的viewDidAppear

自此所有视图展示出来 

总结一下:加载阶段loadView阶段,先把subViews加到各自的superView上,然后再一次寻找自己的superView并依次添加。到此为止,只有addSubView有关系,当所有的subview在内存层级上全部加完了,会调用一次viewWillAppear然后把加载好的view一层层的分别绘制到window上 。然后layoutSubView,DrawRect完成。


当移除VC的时候 

先调用VC的viewWillDisapper

然后调用View的willMoveToWindow ->subView的willMoveToWindow->subView的didMoveToWindow->view的didMoveToWindow

然后调用VC的viewDidDisappear->dealloc销毁VC之后

调用view的willMoveToSuperView ->view的didMoveToSuperView->view的willRemoveSubView

此时view的所有操作都完成了

再移除subView ,subView的willMoveToSuperView ->subView的didMoveToSuperView

总结一下:

移除阶段,会先依次移除本view的moveToWindow,然后依次移除所有子视图,调用他们的moveToWindow,view就在window上移除消失了。然后再removeFromSuperView,然后dealloc后,再removeSubView。

你可能感兴趣的:(UIView生命周期)