您的位置:首页 > 其它

文章标题

2016-03-05 22:34 253 查看

1.自动布局

1.1 autoresizing的介绍

1.1.1 六根线

与父控件之间的关系,外面有四根线 控制和父控件之间的边距

是否随着父控件的变化而变化

中间的 两根线 设置是否随父控件的 变化而变化

1.1.2 弊端

它是 相对于父控件进行设置的,当想设置兄弟 控件之间的 约束时, 办不到,无法设置

代码实现 默认的约束是 左上 .

self.redView.autoresizingMask


1.2 autolayou

子控件之间的相对关系的设定.

中的四个按钮:

1. 将控件按照 类似于集装箱的样式进行 排列

2. 设置zi控件之间的 排版关系 (多个按钮的相对位置)

3. 设置子控件的 具体位置,大小,和与父控件的 margin

4. 更新 约束的 相对frame

1.2.1 约束的使用

当使用 frame的时候,需要设置x y w h 四个信息

当使用约束的时候, 也必须包含 x y w h 四个信息

1.2.2 设置约束时的 警告

红色警告 : 1. 约束条件不足,(x y w h 四个条件有缺失)

2. 约束条件有冲突 (改变约束的时候 先删除之前的约束 )

黄色警告 : x y w h 都有设置,但是展示的位置 与 约束的位置 不一

解决方法 : update frame

1.2.3 设置控件之间的约束

控件处于界面的 边界处, 建议以父控件为基准

控件包含具体值的约束和相对的约束,先设置具体的约束

一个控件 一个的设置约束

复制控件的时候 先把之前控件的 约束全部删除,避免约束的冲突

案例实现

在界面上 有一个蓝色的View ,距离上 左 右 各有20 个间距 高度是70

在蓝色的VIew 下方有一个 红色的View , 红色的View 距离蓝色的View 有 20 的距离

红色的View和蓝色的 VIew 左对齐

红色的View的高度 与蓝色一致 ,高宽是蓝色的一半

约束的核心计算公式

firstItem = secondItem * multiplier + constent ;
constent 相对偏移量 (注意正负的取值)


注意 :当一个控件里面有内容的时候可以只设置 x y 不设置 w h , 控件的w h 会根据内容来获取

1.3使用代码添加 约束

1.3.1 先取消autoresizing

blueView.translatesAutoresizingMaskIntoConstrains = NO;


1.3.2 设置约束

firstItem = secondItem * multiolier + constent ;

//第一个参数:WithItem :代表的是 firstItem
//第二个参数:attribute:NSLayoutAttributeTop 要做约束的线是那一条
//第三个参数:relatedBy  比较的方式  =  <= >=
//第四个参数:toItem 代表的是secondItem 第二个控件
//第五个参数:attribute:<#(NSLayoutAttribute)#> 相对于第二个控件的什么位置

NSLayoutConstraint *blueViewTop = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1 constant:20];


注意:约束 添加的(约束由那个控件进行添加),如果不存在比较关系 –> 约束放在自身, 如果存在比较关系 –> 就去找比较控件他们相同的父控件 然后添加,

[self.view addConstrain:blueViewTop]  ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: