Auto Layout 是一种基于约束的、描述性的布局系统。也就是使用约束条件来描述布局,View的Frame会根据这些描述来进行计算。

在iOS6.0以后加入了一个新类: NSLayoutConstraint。 我们以后可以使用可视化格式化语言 Visual Format Language 的方式创建约束:
#pragma mark - 添加所有控件

- (void)addAllViews

{

// 在延展中先声明leftButton和rightButton两个属性

// 添加_leftButton

self.leftButton = [UIButton buttonWithType:UIButtonTypeSystem];

[_leftButton setTitle:@"Left" forState:UIControlStateNormal];

_leftButton.layer.borderColor = [UIColor blackColor].CGColor;

_leftButton.layer.borderWidth = 2.0f;

[self.view addSubview:_leftButton];

// 添加_rightButton

self.rightButton = [UIButton buttonWithType:UIButtonTypeSystem];

[_rightButton setTitle:@"Right" forState:UIControlStateNormal];

_rightButton.layer.borderColor = [UIColor blackColor].CGColor;

_rightButton.layer.borderWidth = 2.0f;

[self.view addSubview:_rightButton];

// 关闭自动调整

_leftButton.translatesAutoresizingMaskIntoConstraints = NO;

_rightButton.translatesAutoresizingMaskIntoConstraints = NO;

// 1. 创建一个存放约束条件的可变数组

NSMutableArray *tempConstraintsMutableArray = [NSMutableArray array];

// 2. 在水平方向上:设置_leftButton距离父视图左侧距离为50,_leftButton的宽度为100,_rightButton距离_leftButton的横向距离为50,_rightButton的宽度设置为100

// 需要理解的参数:@"H:|-50-[_leftButton(==100)]-100-[_rightButton(==100)]"

[tempConstraintsMutableArray addObjectsFromArray:[NSLayoutConstraintconstraintsWithVisualFormat:@"H:|-50-[_leftButton(==100)]-100-[_rightButton(==100)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_leftButton, _rightButton)]];

// 和上面的设置类似,只是在竖直方向上

// 在竖直方向上:设置_leftButton距离父视图顶部100,_leftButton高度为100,_rightButton和_leftButton之间的距离为100,_rightButton的高度为100

// 需要理解的参数:@"V:|-100-[_leftButton(==100)]-50-[_rightButton(==100)]"

//     [tempConstraintsMutableArray addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-100-[_leftButton(==100)]-50-[_rightButton(==100)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_leftButton, _rightButton)]];

// 3. 在垂直方向上:给_leftButton设置距离父视图顶部50,_leftButton高度为100

// 需要理解的参数:@"H:|-100-[_leftButton(==100)]"

[tempConstraintsMutableArray addObjectsFromArray:[NSLayoutConstraintconstraintsWithVisualFormat:@"V:|-100-[_leftButton(==100)]" options:0metrics:nil views:NSDictionaryOfVariableBindings(_leftButton)]];

// 在垂直方向上:给_rightButton设置距离父视图顶部50,_rightButton高度为100

[tempConstraintsMutableArray addObjectsFromArray:[NSLayoutConstraintconstraintsWithVisualFormat:@"V:|-100-[_rightButton(==_leftButton)]"options:0 metrics:nil views:NSDictionaryOfVariableBindings(_rightButton,_leftButton)]];

// 和上面的设置类似,只是在水平方向上的

// 在水平方向上:设置_leftButton距离父视图左侧为50,_leftButton的宽度为50

//    [tempConstraintsMutableArray addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-100-[_leftButton(==50)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_leftButton)]];

// 在水平方向上:设置_rightButton距离父视图左侧为50,_rightButton的宽度为50

//    [tempConstraintsMutableArray addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-100-[_rightButton(==_leftButton)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_rightButton, _leftButton)]];

// 4. 给视图添加约束

[self.view addConstraints:tempConstraintsMutableArray];

**

*  解释

*  H: Horizontal, 水平的,水平方向

*  V: Vertical, 垂直的,竖直方向

*

}

纯代码添加约束条件(Auto Layout)的更多相关文章

  1. IOS 纯代码添加 Button Image Label 添加到自定义View中

    @interface ViewController () /**获取.plist数据*/ @property (nonatomic,strong) NSArray *apps; @end @imple ...

  2. iOS-原生纯代码约束总结(二)之 AutoLayout

    一,概述 AutoLayout相比AutoResizing更加实用,是可以完全替代AutoResizing的一种自动布局方式.而在使用AutoLayout前,我们必须理解一个属性,那就是transla ...

  3. iOS 开发实践之 Auto Layout

    原:http://xuexuefeng.com/autolayout/?utm_source=tuicool 本文是博主 iOS 开发实践系列中的一篇,主要讲述 iOS 中 Auto Layout(自 ...

  4. iOS开发之Auto Layout入门(转)

    随着iPhone6与iOS8的临近,适配的问题讲更加复杂,最近学习了一下Auto Layout的使用,与大家分享. 什么是Auto Layout? Auto Layout是iOS6发布后引入的一个全新 ...

  5. 从 Auto Layout 的布局算法谈性能

    这是使用 ASDK 性能调优系列的第二篇文章,前一篇文章中讲到了如何提升 iOS 应用的渲染性能,你可以点击 这里 了解这部分的内容. http://t.cn/Rc4KbUC 在上一篇文章中,我们提到 ...

  6. iOS------手势操作(nib文件、纯代码)

    总共有六种手势识别:轻击手势(TapGestureRecognizer),轻扫手势 (SwipeGestureRecognizer), 长按手势(LongPressGestureRecognizer) ...

  7. 【转】iOS6中的Auto Layout:通过代码添加约束

        最近做的项目用到了Auto Layout,于是经过了一番大量的google,这是我看到的讲用代码创建约束最清晰的一篇教程,于是想跟更多的人分享一下.原文也比较简单,可以直接过去看,如果我翻译的 ...

  8. iOS 8 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束

    http://blog.csdn.net/pucker/article/details/41843511 上一篇文章<iOS 8界面自动布局系列-1>简要介绍了iOS界面布局方式的前世今生 ...

  9. 手写代码自动实现自动布局,即Auto Layout的使用

    手写代码自动实现自动布局,即Auto Layout的使用,有需要的朋友可以参考下. 这里要注意几点: 对子视图的约束,若是基于父视图,要通过父视图去添加约束. 对子视图进行自动布局调整,首先对UIVi ...

随机推荐

  1. ACM_基础知识

    1. PI值的定义 const double PI = acos(-1.0); 2. system("pause")就是调用从程序中调用系统命令,而"pause" ...

  2. 在高版本SDK中打开现存低版本SDK工程

    直接打开低版本SDK工程会出现错误提示:“Unable to resolve target 'android-xx” 解决方法: 1.将project.properties文件中的“target=an ...

  3. Win7 U盘安装Ubuntu16.04 双系统

    Win7系统下安装Ubuntu系统,主要分为三步: 第1步:制作U盘启动盘 第2步:安装Ubuntu系统 第3步:创建启动系统引导 第1步:制作U盘启动盘 1.下载Ubuntu16.04安装镜像,官网 ...

  4. EasyUI datagrid自适应问题解决

    在使用js 动态创建EasyUI datagrid时,如果设置fit为true,在显示的时候数据的高度为固定高度不能自适应 解决办法是把fit设为false. 但这样设置后又有个问题,如果把colum ...

  5. 射击的乐趣:WIN32诠释打飞机游戏源码补充

    打飞机游戏源码补充 从指定位置加载bmp并显示到对话框. , TRUE);, , LR_LOADFROMFILE);          {         BITMAP bmpinfo;        ...

  6. sgu 101 无向图有双重边的欧拉路径

    #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> ...

  7. JFinal的Shiro权限管理插件--玛雅牛 / JFinalShiro

    http://git.oschina.net/myaniu/jfinalshiroplugin JFinalShiroPlugin JFinal的Shiro插件,实现权限管理. 升级说明 1)支持JF ...

  8. Behavioral模式State模式

    1.意向 同意一个目标,然后改变其内部状态,改变它的行为. 对象似乎改变它的类别. 2.别名 状态对象(Objects for States) 3.动机 考虑一个表示网络连接的类TCPConnecti ...

  9. ios的NSMutableString用法

    版权声明:本文为博主原创文章,未经博主允许不得转载. 详见代码: // //  main.m //  Foundation5-NSMutableString // //  Created by mj  ...

  10. Swift概览

    <pre name="code" class="objc">转自:http://letsswift.com/2014/06/swift_overvi ...