autoResizing:布局
一共六条约束。spa
四周的四条约束:用于保证和其余视图的距离保持不变(若是勾选保持不变)code
中间的两条约束:用因而否容许该视图能够缩放(若是勾选,则能够缩放)继承
缺陷:若是在一个父视图上添加多个子视图的时候,须要让两个子视图存在某种约束的时候,不怎么可能实现ip
经过代码实现autoResizing字符串
view.autoresizingMask = UIViewAutoresizingNone;//默认不进行自动布局 /* 默认不进行自动布局 UIViewAutoresizingNone 设置表示可伸缩,至关于NIB文件设置不勾选 UIViewAutoresizingFlexibleLeftMargin UIViewAutoresizingFlexibleRightMargin UIViewAutoresizingFlexibleTopMargin UIViewAutoresizingFlexibleBottomMargin 设置表示可伸缩,至关于NIB文件设置勾选 设置横向能够缩放 UIViewAutoresizingFlexibleWidth 设置纵向能够缩放 UIViewAutoresizingFlexibleHeight */
autoLayout:重点it
一、使用autoLayout后,frame失效io
黄色(警告):绘制的视图和添加约束后应该显示的位置不一致,不影响显示结果(使用update frame更新 frame值)class
红色(警告):缺乏约束,约束冲突date
update frame:修改frame,以约束显示视图
update Constraint:修改约束,以frame显示视图
二、代码建立约束
使用代码建立autoLayout约束的时候,首先应该把autoResizing关掉
view.translatesAutoresizingMaskIntoConstraints =NO;
建立方式
NSLayoutConstraint * right = [NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1 constant:-90];
三、添加多个约束
思路:水平的视图当作一组,垂直的视图当作一组
VFL的语法总结:
(1)控件使用”[ ]”括起来
(2)控件之间只用”-”
(3)使用”H/V”表示方向,H:水平 V:垂直
(4)使用”|”表示父视图的边界
(5)对视图自身显示的时候使用”( )”,若是条件有多个用”,”隔开 [button(>= 50,<= 100)]
建立VFL字符串
水平方向H:
竖直方向V:
NSString *str = @"H:|-20-[leftView]-20-[rightView(==leftView)]-20-|"
SizeClasses
使用SizeClasses必须使用Auto Layout
iOS8推出,iOS8以前的不能使用
一、将屏幕分为九种状况
宽:紧凑(compact)任意(any)宽松(regular)
高:紧凑(compact)任意(any)宽松(regular)
注意:若是在any状况下添加约束,会被”继承”
之后添加约束,最好别在含有any的状况下设置