美文网首页
15 autoLayout使用

15 autoLayout使用

作者: rebeccaBull | 来源:发表于2017-03-29 21:38 被阅读0次

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

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

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

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

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

    上面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使用

          本文链接:https://www.haomeiwen.com/subject/xnvyottx.html