setNeedsUpdateConstraints,needsUpdateConstraints等基于约束的AutoLayer的方法
来源:互联网 发布:淘宝食品类目有哪些 编辑:程序博客网 时间:2024/04/30 06:32
转摘原文地址
setNeedsUpdateConstraints,needsUpdateConstraints等基于约束的AutoLayer的方法
1、setNeedsUpdateConstraints
当一个自定义view的某个属性发生改变,并且可能影响到constraint时,需要调用此方法去标记constraints需要在未来的某个点更新,系统然后调用updateConstraints.
2、needsUpdateConstraints
constraint-based layout system使用此返回值去决定是否需要调用updateConstraints作为正常布局过程的一部分。
3、updateConstraintsIfNeeded
立即触发约束更新,自动更新布局。
4、updateConstraints
自定义view应该重写此方法在其中建立constraints. 注意:要在实现在最后调用[super updateConstraints]
Auto Layout Process 自动布局过程
与使用springs and struts(autoresizingMask)比较,Auto layout在view显示之前,多引入了两个步骤:updating constraints 和laying out views。每一个步骤都依赖于上一个。display依赖layout,而layout依赖updating constraints。 updating constraints->layout->display
第一步:updating constraints,被称为测量阶段,其从下向上(from subview to super view),为下一步layout准备信息。可以通过调用方法setNeedUpdateConstraints去触发此步。constraints的改变也会自动的触发此步。但是,当你自定义view的时候,如果一些改变可能会影响到布局的时候,通常需要自己去通知Auto layout,updateConstraintsIfNeeded。
自定义view的话,通常可以重写updateConstraints方法,在其中可以添加view需要的局部的contraints。
第二步:layout,其从上向下(from super view to subview),此步主要应用上一步的信息去设置view的center和bounds。可以通过调用setNeedsLayout去触发此步骤,此方法不会立即应用layout。如果想要系统立即的更新layout,可以调用layoutIfNeeded。另外,自定义view可以重写方法layoutSubViews来在layout的工程中得到更多的定制化效果。
第三步:display,此步时把view渲染到屏幕上,它与你是否使用Auto layout无关,其操作是从上向下(from super view to subview),通过调用setNeedsDisplay触发,
因为每一步都依赖前一步,因此一个display可能会触发layout,当有任何layout没有被处理的时候,同理,layout可能会触发updating constraints,当constraint system更新改变的时候。
需要注意的是,这三步不是单向的,constraint-based layout是一个迭代的过程,layout过程中,可能去改变constraints,有一次触发updating constraints,进行一轮layout过程。
注意:如果你每一次调用自定义layoutSubviews都会导致另一个布局传递,那么你将会陷入一个无限循环中。
- setNeedsUpdateConstraints,needsUpdateConstraints等基于约束的AutoLayer的方法
- setNeedsUpdateConstraints,needsUpdateConstraints等基于约束的AutoLayer的方法
- UI AutoLayer 自动布局-->约束
- 约束满足问题的求解方法之基于回溯的搜索和基于相容性技术的约束传播
- 基于约束的SQL攻击
- 基于约束的SQL攻击
- 添加约束的方法:
- sql脚本查询数据库表,数据,结构,约束等操作的方法
- 关于《一种基于球面透视投影约束的鱼眼镜头校正方法》的流程
- unique约束的删除方法
- 约束的属性和方法
- 基于时间约束的FCM聚类
- 推荐算法:基于约束的推荐
- 基于Householder变换的约束自适应算法
- Oracle的关于建表,约束,查询等的练习
- SQL的主键和外键等各种约束
- 泛型 -- 关于方法的类型约束
- 几种进行时序约束的方法
- 在Unity中调试dll
- Python中使用中文
- TCP为什么需要三次握手和四次挥手
- 【.Net码农】【MVC】多层架构+MVC+EF+AUTOFAC+AUTOMAPPER
- windows下设置tomcat内存
- setNeedsUpdateConstraints,needsUpdateConstraints等基于约束的AutoLayer的方法
- 数据结构实验之二叉树二:遍历二叉树
- ASP.NET中GridView使用简单攻略
- 变脸式应用 / 分页列表框架(四)
- 蓝桥杯 算法提高 P1001
- 北漂的程序猿何去何从
- UITableView如何开启极简模式
- Python正则表达式验证邮箱
- IBM HyperLedger fabric基础