autoResizing:
一共六条约束。
四周的四条约束:用于保证和其他视图的距离保持不变(如果勾选保持不变)
中间的两条约束:用于是否允许该视图可以缩放(如果勾选,则可以缩放)
缺陷:如果在一个父视图上添加多个子视图的时候,需要让两个子视图存在某种约束的时候,不怎么可能实现
通过代码实现autoResizing
view.autoresizingMask = UIViewAutoresizingNone;//默认不进行自动布局 /* 默认不进行自动布局 UIViewAutoresizingNone 设置表示可伸缩,相当于NIB文件设置不勾选 UIViewAutoresizingFlexibleLeftMargin UIViewAutoresizingFlexibleRightMargin UIViewAutoresizingFlexibleTopMargin UIViewAutoresizingFlexibleBottomMargin 设置表示可伸缩,相当于NIB文件设置勾选 设置横向可以缩放 UIViewAutoresizingFlexibleWidth 设置纵向可以缩放 UIViewAutoresizingFlexibleHeight */
autoLayout:重点
1、使用autoLayout后,frame失效
黄色(警告):绘制的视图和添加约束后应该显示的位置不一致,不影响显示结果(使用update frame更新 frame值)
红色(警告):缺少约束,约束冲突
update frame:修改frame,以约束显示视图
update Constraint:修改约束,以frame显示视图
2、代码创建约束
使用代码创建autoLayout约束的时候,首先应该把autoResizing关掉
view.translatesAutoresizingMaskIntoConstraints =NO;
创建方式
NSLayoutConstraint * right = [NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1 constant:-90];
3、添加多个约束
思路:水平的视图看成一组,垂直的视图看成一组
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之前的不能使用
1、将屏幕分为九种情况
宽:紧凑(compact)任意(any)宽松(regular)
高:紧凑(compact)任意(any)宽松(regular)
注意:如果在any情况下添加约束,会被”继承”
以后添加约束,最好别在含有any的情况下设置
时间: 2024-12-09 06:43:59