第二周
完成状态
- 进行中
- 已完成
- 维护中
日期
2019/06/10-2019/06/16
列表
VC的布局时机、所用方法以及UIView内部布局执行顺序Knowledge Merge
1. VC的布局时机、所用方法以及UIView内部布局执行顺序
VC view 布局生命周期
- alloc
- init(xib. storyboard)
- awakeFromNib 是否关联,有就关联xib
- loadView 优先从nib载入控制器视图
- viewDidLoad 可以进行自定义数据以及动态创建其他控件。在这两个方法中实现约束
- viewWillAppear
拿不到frame, 可在实现约束后调用
layoutIfNeeded
此处才能拿到 - viewWillLayoutSubviews 将要布局子控件
- viewDidLayoutSubviews 子控件布局完成
- viewDidAppear 已在屏幕上渲染完成
- viewWillDisappear
- viewDidDisappear
- dealloc
layoutSubviews 调用时机
- 当view 被添加到另一个view上
- addSubview(子view需要有frame)
- 屏幕方向变更
- frame 发生变化
- 滚动一个UIScrollView会触发 layoutSubviews
- 改变 view 大小,触发父view layoutSubviews
- view 内部执行顺序
- setNeedsUpdateConstraints:标记需要updateConstraints。
- needsUpdateConstraints:返回是否需要updateConstraints。
- updateConstraintsIfNeeded:若需要,马上updateConstraints。
- updateConstraints:更新约束
自定义view应该重写此方法在其中建立constraints. 要在最后调用[super updateConstraints].
不要手动调用 - layoutIfNeeded 使用此方法强制立即进行layout,从当前view开始,此方法会遍历整个view层次(包括superviews)请求layout。因此,调用此方法会强制整个view层次布局。
- setNeedsLayout 此方法会将view当前的layout设置为无效的,并在下一个upadte cycle里去触发layout更新。
- layoutSubviews 不要手动调用
- setNeedsDisplay
标记整个视图的边界矩形需要重绘.
不要手动调用 - drawRect 如果你的View画自定义的内容,就要实现该方法,否则避免覆盖该方法。
来源 《VC的布局时机、所用方法以及UIView内部布局执行顺序》
用工具思路来规范化 git commit message
不规范 commit message
- 说不出所以然的 commit message
- commit message 写的很简单,无法从中提取出本次 commit 用意
- commit message 很随意, 无法与变更代码之间建立联系
- commit message 过于冗余
规范 commit message
- 发生问题, 能快速识别问题代码并回滚
- commit 和代码之间建立联系, 冰河相关的 issue 关联
规范化 commit message
具体格式
<type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer>
说明:
- commit message包含三部分,header, body和footer,其中header必选,body和footer可选。
type: 本次commit的类型,例如 bugfix
# feature:新功能开发 # update:功能修改 # bugfix:bug修复 # refactor:重构(非新增功能、非bug修复) # docs:文档(documentation) # style:格式(不影响代码运行的变动) # test:增加测试 # chore:构建过程或辅助工具的变动
- scope 本次 commit 波及的范围 ,比如数据层、控制层、视图层等等,不同项目不同。
- subject: 简单阐明本次 commit的主旨。
- body: 描述 commit ,如需换行则使用
|
- footer: 描述与之关联的 issue 或者 break change
- revert 撤销操作
当前commit用于撤销之前的commit时, 需要以
revert:
开头,后面跟被撤销 commit 的header
设置提交模板
- 仓库设置
git config commit.template xxxx_templage
- 全局设置
git config --global commit.template xxx_template
- 仓库设置
设置文本编辑器
git config --global core.editor vim