面白きことは良きことなり

拙く未熟なiOSエンジニアの備忘録と戯言

UIView(とおまけでUIViewController)のLifecycle

UIViewControllerのLifecycleは馴染み深く、よく使うしわかりやすいので覚えているから困らないけど、たまにUIViewのLifecycleの知識が必要になるときがある。
名前と処理と呼ばれる順序が脳内で一致していないので、ひとまず順序だけでもまとめておこうと思い記載。

backgroundcolorをセットするとsetNeedsDisplayが追加で呼ばれたりと、
Objectに対して行う処理で複雑化するが、最低限呼ばれるのは下記処理のようだ。

UIViewのLifecycle

// alloc & init処理
01. -[CustomView setNeedsDisplay]
02. -[CustomView setNeedsDisplay]
// addSubview処理
03. -[CustomView willMoveToSuperview:]
04. -[CustomView didMoveToSuperview]
05. -[CustomView willMoveToWindow:]
06. -[CustomView didMoveToWindow]
07. -[CustomView layoutSubviews]
08. -[CustomView drawRect:] // 表示完了
// removeFromSuperview処理
09. -[CustomView willMoveToSuperview:]
10. -[CustomView willMoveToWindow:]
11. -[CustomView didMoveToWindow]
12. -[CustomView didMoveToSuperview]
13. -[CustomView removeFromSuperview]

UIViewControllerと内包しているUIViewを合わせたLifecycle

// UIViewController
01. -[UIViewController loadView]
02. -[UIViewController viewDidLoad]
03. -[UIViewController viewWillAppear:]
// UIView
04. -[UIView viewWillLayoutSubviews]
05. -[UIView viewDidLayoutSubviews]
06. -[UIView viewWillLayoutSubviews]
07. -[UIView viewDidLayoutSubviews]
// UIViewController
08. -[UIViewController viewDidAppear:]
09. -[UIViewController viewWillDisappear:]
// UIView
10. -[UIView viewWillLayoutSubviews]
11. -[UIView viewDidLayoutSubviews]
// UIViewController
12. -[UIViewController viewDidDisappear:]
13. -[UIViewController dealloc]