iOS开发之 AutoLayout自动布局
2015-09-30 19:36
561 查看
AutoLayout 入门须知:
相对布局是找一个参照物
拿参照物当做基础,设置他和参照物的相对距离
来设置自己的位置
frame 原点
自身的尺寸 来确定自身的位置
autoLayout 根据参照视图的位置
来定义自己的位置
autoLayout 约束视图和视图的关系
来分配屏幕上的位置
// 使用VFL(Visual Format Language
视觉格式语言)通过添加字符串
来约束视图和视图之间的关系
使用 autoLayout
,必须把 translatesAutoresizingMaskIntoConstraints
禁用才可以使用
相对布局是找一个参照物
拿参照物当做基础,设置他和参照物的相对距离 来设置自己的位置
VFL 需有横竖
两个方向的约束 H:横向 V:
竖向 | 表示他的父视图 -50-
表示两个视图的间距
H:横向
| 表示他的父视图
-50- 表示后面视图
与前面视图的距离 (后面视图是textField,前面视图是他的父视图)
[textField(>=200)] 要约束视图的宽 (>=200)允许最小的宽度是200
如果是竖向
就是允许最小的高度
@"H:|-50-[textField(>=200)]-50-|"
距离坐边原点距离50
右边边界距离50 允许视图的最小宽度是200
V: 竖向
使用autoLayout适配的时候,以最小尺寸设备
为基准
VFL 横向
竖向布局
@"H:" 设置横向布局
@"V:" 设置竖向布局
设置横向布局
距离参照视图的左侧边距
@"H:|-20-"
@"H:[view]-20-"
@"H:|-20-[view(200)]" view的宽
永远是200
@"H:|-20-[view(otherView)]" view的宽
与otherView的宽相同
@"H:|-20-[view(>=200)]" 设置横向布局
距离参照视图的左侧边距
设置view横向的尺寸
不能低于200
@"H:|-20-[view(>=200)]-20-|" 设置横向布局
距离参照视图的左侧边距
设置view横向的尺寸
不能低于200 设置右侧与参照视图之间的间距
视图使用属性的时候
绑定key 需要绑定它真实的名字_titleLable
而不能绑定self.titleLable ,因为找不到这个self.titleLable
1、demo1
2、demo2
3、demo3(优化后的demo2)
效果图如下:
相对布局是找一个参照物
拿参照物当做基础,设置他和参照物的相对距离
来设置自己的位置
frame 原点
自身的尺寸 来确定自身的位置
autoLayout 根据参照视图的位置
来定义自己的位置
autoLayout 约束视图和视图的关系
来分配屏幕上的位置
// 使用VFL(Visual Format Language
视觉格式语言)通过添加字符串
来约束视图和视图之间的关系
使用 autoLayout
,必须把 translatesAutoresizingMaskIntoConstraints
禁用才可以使用
相对布局是找一个参照物
拿参照物当做基础,设置他和参照物的相对距离 来设置自己的位置
VFL 需有横竖
两个方向的约束 H:横向 V:
竖向 | 表示他的父视图 -50-
表示两个视图的间距
H:横向
| 表示他的父视图
-50- 表示后面视图
与前面视图的距离 (后面视图是textField,前面视图是他的父视图)
[textField(>=200)] 要约束视图的宽 (>=200)允许最小的宽度是200
如果是竖向
就是允许最小的高度
@"H:|-50-[textField(>=200)]-50-|"
距离坐边原点距离50
右边边界距离50 允许视图的最小宽度是200
V: 竖向
使用autoLayout适配的时候,以最小尺寸设备
为基准
VFL 横向
竖向布局
@"H:" 设置横向布局
@"V:" 设置竖向布局
设置横向布局
距离参照视图的左侧边距
@"H:|-20-"
@"H:[view]-20-"
@"H:|-20-[view(200)]" view的宽
永远是200
@"H:|-20-[view(otherView)]" view的宽
与otherView的宽相同
@"H:|-20-[view(>=200)]" 设置横向布局
距离参照视图的左侧边距
设置view横向的尺寸
不能低于200
@"H:|-20-[view(>=200)]-20-|" 设置横向布局
距离参照视图的左侧边距
设置view横向的尺寸
不能低于200 设置右侧与参照视图之间的间距
视图使用属性的时候
绑定key 需要绑定它真实的名字_titleLable
而不能绑定self.titleLable ,因为找不到这个self.titleLable
1、demo1
<span style="color:#42b05c;"> </span><span style="color:#333333;"> UIView *view = [[UIView alloc]init]; view.translatesAutoresizingMaskIntoConstraints = NO; view.backgroundColor = [UIColor grayColor]; [self.view addSubview:view]; NSDictionary *views = NSDictionaryOfVariableBindings(view); [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]]; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(>=200)]-20-|" options:0 metrics:nil views:views]];</span>
2、demo2
<span style="color:#42b05c;"> </span><span style="color:#333333;"> UIView *view1 = [[UIView alloc]init]; view1.translatesAutoresizingMaskIntoConstraints = NO; view1.backgroundColor = [UIColor redColor]; [self.view addSubview:view1]; UIView *view2 = [[UIView alloc]init]; view2.translatesAutoresizingMaskIntoConstraints = NO; view2.backgroundColor = [UIColor yellowColor]; [self.view addSubview:view2]; NSDictionary *views = NSDictionaryOfVariableBindings(view1,view2); // 红色view横向约束 [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view1(>=200)]-20-|" options:0 metrics:nil views:views]]; // 红色view竖向约束 [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view1(50)]-10-[view2]" options:0 metrics:nil views:views]]; // 黄色view横向约束 [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view2(>=200)]-20-|" options:0 metrics:nil views:views]]; // 黄色view竖向约束 [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[view1]-10-[view2(50)]" options:0 metrics:nil views:views]];</span>
3、demo3(优化后的demo2)
<span style="color:#42b05c;"> </span><span style="color:#333333;"> UIView *view1 = [[UIView alloc]init]; view1.translatesAutoresizingMaskIntoConstraints = NO; view1.backgroundColor = [UIColor redColor]; [self.view addSubview:view1]; UIView *view2 = [[UIView alloc]init]; view2.translatesAutoresizingMaskIntoConstraints = NO; view2.backgroundColor = [UIColor yellowColor]; [self.view addSubview:view2]; NSDictionary *views = NSDictionaryOfVariableBindings(view1,view2); // 红色view横向约束 [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view1(>=200)]-20-|" options:0 metrics:nil views:views]]; // 黄色view横向约束 [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view2(>=200)]-20-|" options:0 metrics:nil views:views]]; // 红色view1 和黄色view2 都在同一个父视图上 约束 [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view1(50)]-10-[view2(50)]" options:0 metrics:nil views:views]];</span>4、demo4
<span style="color:#42b05c;"> </span><span style="color:#333333;"> NSArray *colorList = @[[UIColor redColor],[UIColor yellowColor],[UIColor blueColor]]; for (int i = 0; i<3; i++) { UIView *view = [[UIView alloc]init]; view.translatesAutoresizingMaskIntoConstraints = NO; view.backgroundColor = colorList[i]; view.tag = 100+i; [self.view addSubview:view]; } UIView *redView = [self.view viewWithTag:100]; UIView *yellowView = [self.view viewWithTag:101]; UIView *blueView = [self.view viewWithTag:102]; NSDictionary *views = NSDictionaryOfVariableBindings(redView,yellowView,blueView); NSArray *Harray = @[@"H:|-20-[redView(>=200)]-20-|",@"H:|-20-[yellowView(>=100)]-10-[blueView(yellowView)]-20-|"]; // 红黄 竖向关系 红蓝 竖向关系 NSArray *Varray = @[@"V:|-40-[redView(50)]-10-[yellowView(redView)]",@"V:|-40-[redView(50)]-10-[blueView(redView)]"]; for (int i = 0; i<Harray.count; i++) { [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:Harray[i] options:0 metrics:nil views:views]]; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:Varray[i] options:0 metrics:nil views:views]]; }</span>
效果图如下:
相关文章推荐
- iOS结合导航控制器和标签栏控制器
- 蓝懿iOS培训日志23 自定义Annotation
- 蓝懿iOS培训日志22 图册
- IOS开发 ShareExtension
- iOS9新功能, SpotLight应用内搜索
- 再说说iOS的状态栏(显示与隐藏)
- IOS CGContextRef 写图形跟文字
- iOS_数据存取(二)
- iOS 9 Spotlight简单使用
- iOS 开发之手势
- IOS 3Dtouch
- iOS 9适配技巧(更新版)
- iOS开发之 转场动画CATransition
- 关于iOS的自动弹出键盘问题
- 整理iOS9适配中出现的坑
- 获取当前日期、时间--iOS开发
- iOS开发之 动画组CAAnimationGroup
- iOS 8创建交互式通知
- [iOS]Core Data
- 如何才能系统的学习 iOS 开发,理解一些规则和深层次的机制原理?