AutoLayout技术细节笔记--部分

1,约束规则:

a,对于两个同层级view之间的约束关系,添加到他们的父view

b,对于两个不同层级view之间的约束关系,添加到他们最近的共同父view

c,对于有层次关系的两个view之间的约束关系,添加到层次较高的父view

2,VFL

a,[cancelButton(72)]-12-[acceptButton(50)]

  • 取消按钮宽72pointaccept按钮宽50point,它们之间间距12point
  • b,[wideView(>=60@700)]
  • wideView宽度大于等于60point,该约束条件优先级为700(优先级最大值为1000,优先级越高的约束越先被满足)
  • cV:[redBox][yellowBox(==redBox)]
  • 竖直布局,先是一个redBox,其下方紧接一个宽度等于redBox宽度的yellowBox

d,H:|-[Find]-[FindNext]-[FindField(>=20)]-|

  • 水平布局,Find距离父view左边缘默认间隔宽度,之后是FindNext距离Find间隔默认宽度;再之后是宽度不小于20FindField,它和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];

}];即可。

你可能感兴趣的:(AutoLayout技术细节笔记--部分)