Autolayout 自动布局

原创 2016年08月28日 16:39:10

Autolayout 自动布局


使用代码实现Autolayout的方法1:

  • 1.创建约束
// view1 :要约束的控件
// attr1 :约束的类型(做怎样的约束)
// relation :与参照控件之间的关系
// view2 :参照的控件
// attr2 :约束的类型(做怎样的约束)
// multiplier :乘数
// c :常量
+(id)constraintWithItem:(id)view1
                        attribute:(NSLayoutAttribute)attr1
                        relatedBy:(NSLayoutRelation)relation
                        toItem:(id)view2
                        attribute:(NSLayoutAttribute)attr2
                        multiplier:(CGFloat)multiplier
                        constant:(CGFloat)c;
  • 2.添加约束

- (void)addConstraint:(NSLayoutConstraint *)constraint;

- (void)addConstraints:(NSArray *)constraints;
  • 注意

    • 一定要在拥有父控件之后再添加约束
    • 关闭Autoresizing功能
    //取消系统自动Autoresizing
    view.translatesAutoresizingMaskIntoConstraints = NO;

使用代码实现Autolayout的方法2 - VFL

  • 1.使用VFL创建约束数组
// format :VFL语句
// opts :约束类型
// metrics :VFL语句中用到的具体数值
// views :VFL语句中用到的控件
+ (NSArray *)constraintsWithVisualFormat:(NSString *)format
options:(NSLayoutFormatOptions)opts
metrics:(NSDictionary *)metrics
views:(NSDictionary *)views;
  • 2.使用下面的宏来自动生成views和metrics参数
NSDictionaryOfVariableBindings(...)

使用代码实现Autolayout的方法3 - Masonry

  • 使用步骤
    • 1.添加Masonry文件夹的所有源代码到项目中
    • 2添加2个宏、导入主头文件
    // 只要添加了这个宏,就不用带mas_前缀
         #define MAS_SHORTHAND

    // 只要添加了这个宏,equalTo就等价于mas_equalTo
         #define MAS_SHORTHAND_GLOBALS

    // 这个头文件一定要放在上面两个宏的后面
         #import "Masonry.h"
  • 添加约束的方法
// 这个方法只会添加新的约束
 [view makeConstraints:^(MASConstraintMaker *make) {

 }];

// 这个方法会将以前的所有约束删掉,添加新的约束
 [view remakeConstraints:^(MASConstraintMaker *make) {

 }];

 // 这个方法将会覆盖以前的某些特定的约束
 [view updateConstraints:^(MASConstraintMaker *make) {

 }];
  • 约束的类型
1.**尺寸**:width\height\size
2.**边界**:left\leading\right\trailing\top\bottom
3.**中心点**:center\centerX\centerY
4.**边界**:edges
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

AutoLayout(自动布局)入门

AutoLayout是什么? 使用一句Apple的官方定义的话 AutoLayout是一种基于约束的,描述性的布局系统。 Auto Layout Is a Constraint-Bas...
  • sxfcct
  • sxfcct
  • 2013年04月09日 11:54
  • 35108

iOS-AutoLayout(自动布局代码控制)简单总结

原理:IOS6.0 之后,苹果优化了UI界面的布局方式,提出了自动布局的概念,和之前的autoresizing相比功能更强大。子视图基于父视图的自动布局显示。都是父视图去添加对子视图的约束。 在这...

IOS 6 自动布局 入门-1(IOS中autolayout和之前版本autoresize的差异)

http://www.raywenderlich.com/zh-hans/22873/ios-6-%E8%87%AA%E5%8A%A8%E5%B8%83%E5%B1%80-%E5%85%A5%E9%9...
  • dizzthxl
  • dizzthxl
  • 2013年06月02日 23:22
  • 62587

iOS AutoLayout自动布局中级开发教程(3)-等宽等高等中心

前面讲到了一些关于边界约束的知识,但那些基础知识来解决一些实际问题还是会有点力不从心的;所以我们需要更高级的设置约束的办法,设置等高等宽等中心: 见下图: 图中有3...

iOS AutoLayout自动布局中级开发教程(5)-修改约束的值,延迟加载

如何修改autolayout 约束的值? 目前我已知的方法有5种 1.修改frame 2.修改约束的constant值 3.使用VisualFormat 语言 4.使用 constraintWithI...

IOS不用AutoLayout也能实现自动布局的类(3)----MyRelativeLayout横空出世

MyRelativeLayout为您提供一个用于相对布局处理的类,通过相对布局的使用我们可以减少代码中的位置和尺寸的硬编码,同时不用因为某个子视图的位置或者大小的变动需要大量编码来进行位置和尺寸的调整...

xcode6中自动布局autolayout和sizeclass的使用

一、关于自动布局(Autolayout) 在Xcode中,自动布局看似是一个很复杂的系统,在真正使用它之前,我也是这么认为的,不过事实并非如此。 我们知道,一款iOS应用,其主要UI组件是由一个个相...

IOS不用AutoLayout也能实现自动布局的类(5)----MyFlowLayout横空出世

流式布局MyFlowLayout,是MyLayout的5大布局体系里面的一种布局,MyFlowLayout流式布局提供了4种流式布局类型, 可以用它来构建基于界面流以及一些有规律布局排列的应用场景,比...

iOS-AutoLayout(自动布局代码控制)简单总结

原理:IOS6.0 之后,苹果优化了UI界面的布局方式,提出了自动布局的概念,和之前的autoresizing相比功能更强大。子视图基于父视图的自动布局显示。都是父视图去添加对子视图的约束。 在这里...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Autolayout 自动布局
举报原因:
原因补充:

(最多只允许输入30个字)