iOS视图约束
自动约束方法
updateConstraintsIfNedded
触发开始约束更新
当有新的布局时,系统调用此方法确保视图和子视图约束信息的更新,系统会自动调用这方法,我们也可以手动调用此方法,来检查最新的约束条件updateConstraints
更新约束
我们可以通过重写此方法来设置自己的约束,系统在调用layOut布局之前,回调用这个方法,确认在视图的约束
当我们的视图有约束变化或者失效,我们可以改变这些约束然后调用setNeedUpdateConstraints
标记约束需要更新
需要在此方法最后调用super updateConstraints
-(BOOL)neddUpdateConstrains
调用此方法根据此方法的返回 决定是否需要更新约束setNeedsUpdateConstraints
当视图需要更新时 我们可以调用此方法,然后在系统决定更新时机
updateConstranins和layOut方法联系
AutoLayout在更新显示view之前,会先调用updateContrains和layingOutView,layout和依赖于Contrains,而view的最终显示依赖于layout
第一步:update constrains 进行视图的约束,从俯视图到子视图更新约束信息,可以通过调用setNeedsUpdateConstraints
来触发此步骤. 而当我们做出一些改变约束的事情事,可以调用updateConstraintsIfNedded
来通知约束改变,可以在updateConstraints
方法中重写或者补充一些视图的约束
第二步: lauout 根据上一步的约束结果,从父视图到子视图来设置视图的bounds frame等 确定试图位置,与constrains类似 有setNeedLayout
layoutIfNeeded
layoutSubviews
方法
第三步: 此步骤时 把view展示在屏幕上 此步骤可以通过setNeedDisplay
来触发
这三个步骤互相依赖,每一步的触发都依赖于上一步
补充
`UIViewControlle
```r`中有`- (void)updateViewConstraints`默认实现是调用UIView的`uodateConstraints`