15 autoLayout使用

按比例设置宽高,间距大小的问题

1.如果某个视图是根据父视图的大小而定,那么可以把按着control键,拉一条线到它的父视图上面,选择一个Equia Widths,或者Equia Heights,前者是宽度随着父视图的大小而定,后者是高度随着父视图而定。

2.如果要做两个正方形并排放,这时候可以利用它本身自带的aspact ratio功能,让其高宽比例是1:1。按着control键拉一条线指向它自身,这时候就会出现这个选项。

15 autoLayout使用_第1张图片

Horizontal Center in Container —> 水平居中约束

Vertical Center in Container —> 垂直居中约束

15 autoLayout使用_第2张图片

上面4根线的作用设置距离父控件上下左右距离多少

下面width、height 设置控件自己的大小

托线设置约束

父子之间控件

Leading Space to Container Margin —> Leading Space to Container 距离父控件左边的间距

Trailing Space to Container Margin == Trailing Space to Container —> 距离父控件右边边的间距

Bottom Space to Container

Bottom Space to Container —> 距离父控件下边的间距

Center Horizontally in Container —> 与父控件水平居中

Center Vertical in Container —> 与父控件垂直居中

兄弟之间控件

Horizontal Spacing —> 相对于兄弟水平间距

Vertical Spacing —> 相对于兄弟竖直间距

Top —> 相对于兄弟上边距

Center Vertically —> 相对于兄弟垂直中心对齐

Baseline —> 文字距UI控件顶部的偏移量

Bottom —> 相对于兄弟下边距

Leading \ Left —> 相对于兄弟左边距

Center Horizontally —> 相对于兄弟水平中心对齐

Trailing \ Right —> 相对于兄弟右边距

Equal Widths —> 相对于兄弟宽度

Equal Heights —> 相对于兄弟高度

Aspect Ratio —>

Hold Shift To select multiple —> 按住Shift可以选择多个

Hold Option for alternates —> 按住Option可以替换(不好用)

代码设置约束

约束添加到who上

如果这个约束只与自己有关,那么添加到自己身上

如果这个约束自己与父控件有关,那么添加到父控件上

如果这个约束自己与其他控件有关系,那么添加到他们公共父辈的控件上

NslayoutConstraint *constraint = [NSlayoutConstraint constraintWithItem:view1 attribute:attr1 relatedBy:relation toItem:view2 attribute: attr2 multiplier:multiplier constant:c];

view1 : 要约束的view

attr1 : 那个属性(x, y, width, height)

NSLayoutAttributeLeft —> 左

NSLayoutAttributeRight —> 右

NSLayoutAttributeTop —> 上

NSLayoutAttributeBottom —> 下

NSLayoutAttributeLeading —> 左

NSLayoutAttributeTrailing —> 右

NSLayoutAttributeWidth —> 宽度

NSLayoutAttributeHeight —> 高度

NSLayoutAttributeCenterX —> 中心点X

NSLayoutAttributeCenterY —> 中心点Y

NSLayoutAttributeBaseline —> 基本线

NSLayoutAttributeLastBaseline —> 同 NSLayoutAttributeBaseline

NSLayoutAttributeFirstBaseline —> 第一条基本线

iOS8 新增约束

NSLayoutAttributeLeftMargin —> 左边距

NSLayoutAttributeRightMargin —> 右边距

NSLayoutAttributeTopMargin —> 上边距

NSLayoutAttributeBottomMargin —> 下边距

NSLayoutAttributeLeadingMargin —> 左边距

NSLayoutAttributeTrailingMargin —> 右边距

NSLayoutAttributeCenterXWithinMargins —> 中心X边距

NSLayoutAttributeCenterYWithinMargins —> 中心Y边距

NSLayoutAttributeNotAnAttribute —> 没有边距

relation : 约束关系

NSLayoutRelationLessThanOrEqual <=

NSLayoutRelationEqual ==

NSLayoutRelationGreaterThanOrEqual >=

view2 : 参照的view

attr2 : 参照的属性(x, y, width, height)

multiplier : 倍数关系

c : 额外的值, 在倍数之外的值

view1.attr1 relation(= or < or >) view2.attr2 * multiplier(倍数) + c

注意:1.一定先有父控件,再添加约束,否则会报错误.

// 使用约束一定要设置这个值,禁止系统把AutoresizingMask的一些设置转换成Autolayout

2. self.view1.translatesAutoresizingMaskIntoConstraints = NO;

你可能感兴趣的:(15 autoLayout使用)