第二周

完成状态

  • 进行中
  • 已完成
  • 维护中

日期

2019/06/10-2019/06/16

列表

  1. VC的布局时机、所用方法以及UIView内部布局执行顺序

    Knowledge Merge

1. VC的布局时机、所用方法以及UIView内部布局执行顺序

  1. VC view 布局生命周期

    • alloc
    • init(xib. storyboard)
    • awakeFromNib 是否关联,有就关联xib
    • loadView 优先从nib载入控制器视图
    • viewDidLoad 可以进行自定义数据以及动态创建其他控件。在这两个方法中实现约束
    • viewWillAppear 拿不到frame, 可在实现约束后调用 layoutIfNeeded 此处才能拿到
    • viewWillLayoutSubviews 将要布局子控件
    • viewDidLayoutSubviews 子控件布局完成
    • viewDidAppear 已在屏幕上渲染完成
    • viewWillDisappear
    • viewDidDisappear
    • dealloc
  2. layoutSubviews 调用时机

    • 当view 被添加到另一个view上
    • addSubview(子view需要有frame)
    • 屏幕方向变更
    • frame 发生变化
    • 滚动一个UIScrollView会触发 layoutSubviews
    • 改变 view 大小,触发父view layoutSubviews
  1. 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_layout_fun_run

来源 《VC的布局时机、所用方法以及UIView内部布局执行顺序》

用工具思路来规范化 git commit message

  1. 不规范 commit message

    • 说不出所以然的 commit message
    • commit message 写的很简单,无法从中提取出本次 commit 用意
    • commit message 很随意, 无法与变更代码之间建立联系
    • commit message 过于冗余
  2. 规范 commit message

    • 发生问题, 能快速识别问题代码并回滚
    • commit 和代码之间建立联系, 冰河相关的 issue 关联
规范化 commit message

来源 Angular Git Commit Guidelines

  • 具体格式

      <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

Copyright © 抓🐱的🐟.com 2017 all right reserved,powered by Gitbook该文件修订时间: 2020-03-13 07:05:40

results matching ""

    No results matching ""