zoukankan      html  css  js  c++  java
  • 关于自动布局更新约束方法的总结

    1、layoutSubviews

    在iOS5.1和之前的版本,此方法的缺省实现不会做任何事情(实现为空),iOS5.1之后(iOS6开始)的版本,此方法的缺省实现是使用你设置在此view上面的constraints(Autolayout)去决定subviews的position和size。 UIView的子类如果需要对其subviews进行更精确的布局,则可以重写此方法。只有在autoresizingconstraint-based behaviors of subviews不能提供我们想要的布局结果的时候,我们才应该重写此方法。可以在此方法中直接设置subviews的frame。 我们不应该直接调用此方法,而应当用下面两个方法。

    2、setNeedsLayout

    此方法会将view当前的layout设置为无效的,并在下一个upadte cycle里去触发layout更新。

    3、layoutIfNeeded

    使用此方法强制立即进行layout,从当前view开始,此方法会遍历整个view层次(包括superviews)请求layout。因此,调用此方法会强制整个view层次布局。

    基于约束的AutoLayer的方法:

    1、setNeedsUpdateConstraints

    当一个自定义view的某个属性发生改变,并且可能影响到constraint时,需要调用此方法去标记constraints需要在未来的某个点更新,系统然后调用updateConstraints.

    2、needsUpdateConstraints

    constraint-based layout system使用此返回值去决定是否需要调用updateConstraints作为正常布局过程的一部分。

    3、updateConstraintsIfNeeded

    立即触发约束更新,自动更新布局。

    4、updateConstraints

    自定义view应该重写此方法在其中建立constraints. 注意:要在实现在最后调用[super updateConstraints]

  • 相关阅读:
    设计模式之美学习-设计原则-面向对象基本概念(一)
    redis-分布式锁-设计与使用
    linux常用命令记录(一)
    redis-布隆过滤器使用
    jdk源码阅读-ConcurrentLinkedQueue(一)
    支付宝支付接口-app支付沙箱环境
    RocketMQ-安装
    支付宝支付接口-运行支付宝demo
    elasticsearch-文档-父子文档(十一)
    RTMPdump 源代码分析 1: main()函数
  • 原文地址:https://www.cnblogs.com/xdios/p/4506872.html
Copyright © 2011-2022 走看看