UIView、事件的管理者,负责创建依赖关系。网络
是子视图、事件、CALayer的管理者。布局
处理布局。url
大多数状况下,AutoLayout是自上而下
进行布局,视图树上,父节点设置subviews的约束。code
这样只要知道了树根的frame就能够绘制出整棵视图树。cdn
有些状况下,下层布局会影响上层,如tableView的自动估计、朋友圈新增回复。blog
这时候,视图树子节点须要告诉相应的父节点去从新计算本身的约束,并刷新布局。继承
initWithFrame中事件
组装subviewget
setModel中it
配置数据源,needLayout
layoutSubview中
处理布局
init,只有须要传一些参数的时候,才须要
不要出现self.view,只作普通属性赋值(如model,详情页url等)
viewDidLoad中
组装好subview
viewWilAppear中
处理数据相关,处理系统级任务(好比statusbar、网络监听等)
viewDidLayoutSubviews中
处理布局
subview在getter中初始化
瘦身
ViewModel、RAC、category
把loadingView等常见统一操做,写到一个UIViewController的分类中。