1,约束规则:
a,对于两个同层级view之间的约束关系,添加到他们的父view上
b,对于两个不同层级view之间的约束关系,添加到他们最近的共同父view上
c,对于有层次关系的两个view之间的约束关系,添加到层次较高的父view上
2,VFL
a,[cancelButton(72)]-12-[acceptButton(50)]
- 取消按钮宽72point,accept按钮宽50point,它们之间间距12point
- b,[wideView(>=60@700)]
- wideView宽度大于等于60point,该约束条件优先级为700(优先级最大值为1000,优先级越高的约束越先被满足)
- c,V:[redBox][yellowBox(==redBox)]
- 竖直布局,先是一个redBox,其下方紧接一个宽度等于redBox宽度的yellowBox。
d,H:|-[Find]-[FindNext]-[FindField(>=20)]-|
- 水平布局,Find距离父view左边缘默认间隔宽度,之后是FindNext距离Find间隔默认宽度;再之后是宽度不小于20的FindField,它和FindNext以及父view右边缘的间距都是默认宽度。(竖线’|‘ 表示superview的边缘)
3,BUG
a,布局不能确定--ambiguous Layout
b,无法满足约束--Unsatisfiable Constraints
调试:1--po [[UIWindow keyWindow] _autolayoutTrace]-->找出问题所在。
2--查看view的约束: •
[view constraintsAffectingLayoutForOrientation/Axis: NSLayoutConstraintOrientationHorizontal/Vertical]
- [view hasAmbiguousLayout]
- [view exerciseAmbiguityInLayout]
4-动画
自动布局(autoLayout)后,动画的实现只需[UIView animateWithDuration:0.5 animations:^{
[view layoutIfNeeded];
}];即可。