IOS 学习---storyboard 自动布局

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的情况下设置







你可能感兴趣的:(IOS 学习---storyboard 自动布局)