IOS中AutoLayout

•AutoLayout是一种基于约束的,描述性的布局系统
–基于约束:和以往定义frame的位置和尺寸不同,AutoLayout的位置确定是以所谓相对位置的约束来定义的,比如x坐标为superView的中心,y坐标为屏幕底部上方10像素等
–描述性:约束的定义和各个view的关系使用接近自然语言或者可视化语言的方法来进行描述
–布局系统:用来负责界面的各个元素的位置。
•AutoLayout为开发者提供了一种不同于传统对于UI元素位置指定的布局方法。以前,不论是在IB里拖放,还是在代码中写,每个UIView都会有自己的frame属性,来定义其在当前视图中的位置和尺寸。而使用AutoLayout,就变为了使用约束条件来定义view的位置和尺寸。
AutoLayout的优势:
•解决不同分辨率和屏幕尺寸下view的适配问题,同时也简化了旋转时view的位置的定义。原来在底部之上10像素居中的view,不论在旋转屏幕或是更换设备(iPad、iPad mini、iPhone 4或者是iPhone5)的时候,始终还在底部之上10像素居中的位置,不会发生变化
•使用约束条件来描述布局,view的frame会依据这些约束来进行计算。
 
创建约束:

+ (id)constraintWithItem:attribute:relatedBy:toItem: attribute:multiplier:constant:

 

参数说明:

WithItem:要约束的对象

attribute:对象的布局属性

relatedBy:布局关系

toItem:参照对象

attribute:参照对象的布局属性

multiplier:乘数

constant:常数

 

自动布局的核心公式

Object1.property1=(object2.property2*multiplier)+constant value

 

————————————————————————————————————————

•添加约束

-(void)addConstraint:(NSLayoutConstraint *)constraint

 

•刷新约束的改变

-setNeedsUpdateConstraints

-layoutIfNeeded


[button setTranslatesAutoresizingMaskIntoConstraints:NO];

------------------------------------------------------------------------------

// 2.1 水平方向的约束

NSLayoutConstraint *constraintX = [NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0f constant:0.0f];

 

[self.view addConstraint:constraintX];

 

// 2.2 垂直方向的约束

NSLayoutConstraint *constraintY = [NSLayoutConstraint

=========================================

测试演练5——VFL演练(1)

// 1. 创建三个按钮:top、center、bottom

// 2. 三个按钮宽度为100点

// 3. 三个按钮距离屏幕右侧20点

// 4. bottom按钮距离屏幕底部20点,每个按钮纵向间距为20点

NSDictionary *viewDict = NSDictionaryOfVariableBindings(top, center, bottom);

 

NSArray *consh1 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[top(100)]-20-|" options:0 metrics:nil views:viewDict];

……

 NSArray *consv = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[top(40)]-20-[center(40)]-20-[bottom(40)]-20-|" options:0 metrics:nil views:viewDict];

……

posted on 2013-11-20 22:28  林源  阅读(1345)  评论(0编辑  收藏  举报

导航