1104-Autorezing(淘汰了) & autoLayout(xcode6)
----------------------------
autoResizing
-------------------------------------
新项目建议用storyboard + xib 学习中用代码主要为了搞定旧的项目
初学者不建议的做法:A控件按住Ctrl拖到B控件上也可以设置约束
autoResizing 居中显示的效果 应取消所有的布局线 距离上下左右不固定 就居中了
autoResizing 不能相对布局
autoLayout 解放了屏幕适配问题
autoLayout用模拟器来调试
X Y 宽度高度没有问题就可以了
-----------------
leading Edges 2个或多个控件 左对齐 需要同时选择2个控件才能设置
Ttailing Edges 2个或多个控件 右对齐
Top Edges 2个或多个控件 顶部对其
Bottom Edges 2个或多个控件 底部对齐
Horizontal Centers 2个或多个控件 水平居中
Vertical Centers 2个或多个控件 垂直对齐
Baselines 2个或多个控件 基于某条线对齐
Horizontal Centers in Container 在父控件中 水平居中对齐
Vertical Center in Container 在父控件中 垂直居中对齐
---------------
Constrain to margins ios8新特性 勾选后会左边和右边显示完后 多出一个margin
Width 控件宽度
Height 控件高度
Equal Widths 2个或多个控件 一样宽 需要选择2个控件才能设置 2个控件都一条线
Equal Heights 2个或多个控件 一样高
Aspect Ratio 比例
Align 对齐方式
注意:Equal Widths 设置完了,再修这个约束 设置Multiplier0.5表示只有一半宽度
--------
口诀:红色view的宽度强制右边 = (蓝色view的宽度 +0 )*0.5
priority 在开发中一般不用 一般修改second item 的属性 和constant
----
这个和autoResizing功能一样 距离上下左右的距离固定
-
选择相对哪个控件 固定位置
Top Layout Guide 状态栏
--------------
黄色警告可以不用管 点击自动修复 不点击也没问题 主要是用来观看添加约束后的效果用的
黄色警告标示 需要修复界面显示
设置上下左右距离固定后出现黄色警告 需要手动选择一些更新 Frame 当前控件就会出现跟随 固定设置调整frame了
不要随便多增加约束 可能会导致约束冲突 应该修改约束
----------
items of New Constraints更新当前控件的frame
-------
课堂笔记.m:
或者约束冲突
---------------------
约束被添加的位置
A自身 如果子控件设置自身的宽高 约束会添加到子控件A自身里面
口诀:2个控件有关系 约束添加到组织最近的老大身上
兄弟关系
A控件 与 B控件 A控件添加约束 距离B左边固定 那么约束会添加到A 和B所在的父控件里面
父子关系 或者祖孙关系
A父控件里面有B子控件 子控件B添加约束距离父控件A左边 固定 那么约束会添加到父控件A里面
非直系亲兄弟关系 的不同控件之间
-
A控件和B控件的父控件不相同 A控件添加约束 距离B左边固定 那么约束会添加到 A 和 B距离最近的祖先里面
-----
代码实现autoLayout 为了应付纯代码的旧项目
虽然VFL语言 实现 autoLayout 还算可以 但是优先还是用storyboard 因为效率高 不要装13了
老板根本不懂技术 只看有没有完成任务
-
-------
metric里面放字典也可以 可以设置变量
//结合VFL不支持乘除法 所以需要结合 NSLayoutConstraint
-----------------------------------------------------------
这里不用看
NSLayoutConstraint 代码实现添加约束
------------
autoLayout补充
如果控件有默认的高度 如textField控件里有文字 我们只需要设置autolayout的x/y,autolayout自动计算出宽高 不用指定宽高了
----
autoLayout 动画
// // ViewController.m #import "ViewController.h" @interface ViewController () /** * 距离父控件左边的约束 */ @property (weak, nonatomic) IBOutlet NSLayoutConstraint *leftCos; /** * 距离父控件顶部的约束 */ @property (weak, nonatomic) IBOutlet NSLayoutConstraint *topCos; @end @implementation ViewController - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // 1.修改约束的值 self.leftCos.constant += 100; self.topCos.constant += 100; // 2.执行动画 [UIView animateWithDuration:5 animations:^{ // 让view上的约束执行动画 [self.view layoutIfNeeded]; }]; } @end