1 职责
1.1 UIViewController的职责
UIView、事件的管理者,负责建立依赖关系。
1.2 UIView的职责
-
是子视图、事件、CALayer的管理者。
-
处理布局。
2 布局
大多数情况下,AutoLayout是自上而下
进行布局,视图树上,父节点设置subviews的约束。
这样只要知道了树根的frame就可以绘制出整棵视图树。
有些情况下,下层布局会影响上层,如tableView的自动估计、朋友圈新增回复。
这时候,视图树子节点需要告诉相应的父节点去重新计算自己的约束,并刷新布局。
3 代码组织
3.1 对于view
-
initWithFrame中
组装subview
-
setModel中
配置数据源,needLayout
-
layoutSubview中
处理布局
3.2 对于viewController
-
init,只有需要传一些参数的时候,才需要
不要出现self.view,只做普通属性赋值(如model,详情页url等)
-
viewDidLoad中
组装好subview
-
viewWilAppear中
处理数据相关,处理系统级任务(比如statusbar、网络监听等)
-
viewDidLayoutSubviews中
处理布局
-
subview在getter中初始化
-
瘦身
ViewModel、RAC、category
4 常见类继承关系
5 常见做法
把loadingView等常见统一操作,写到一个UIViewController的分类中。
转载于:https://juejin.im/post/5d077fa0e51d45105d63a50a