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
版权声明:本文为博主原创文章,未经博主允许不得转载。

重写UIButton,用于autoLayout自动布局.图在上,文字在下

模仿百思不得解,先用xib写了,只要在layoutSubViews中写一下imageView,titleLabel的位置即可。 全部代码:https://github.com/kangqingyu/...
  • kangqingyu
  • kangqingyu
  • 2016年08月03日 17:31
  • 593

IOS autolayout自动布局实例(swift)

第四篇 对于一个新手来说,刚接触自动布局这东西,会被一种叫约束的东西搞得晕头转向,不是少添加了,就是多添加了,造成约束冲突,不过弄明白之后,也就那回事了。 首先先上个最终的效果图上来,一步步做出这...
  • shenshucong520
  • shenshucong520
  • 2015年08月18日 17:35
  • 857

自动布局神器 -- ZXPAutoLayout框架的使用

简述地址:http://www.jianshu.com/p/0ed897e93909什么是ZXPAutoLayout ? iOS原生的自动布局(NSLayoutConstraint)非常繁琐, 影响...
  • biggercoffee
  • biggercoffee
  • 2015年12月08日 13:52
  • 4566

iOS10后,部分自动布局(AutoLayout)布局出错的解决方法

问题的根源在于代码中用到了layoutIfNeeded这个方法, 从官方的Release Notes中,看出iOS10应该是更改了layoutIfNeeded的时机(说是修改了以前的release版...
  • p7767158
  • p7767158
  • 2016年10月10日 17:11
  • 1414

Xcode5中如何关闭视图的自动布局(AutoLayout)

Xcode5中如何关闭视图自动布局(AutoLayout) 在修改UIImageView transform属性时, 需要将视图的Autolayout(自动布局)关掉, 否则自动布局可能会影响图片变形...
  • yang_huan1986
  • yang_huan1986
  • 2014年01月18日 12:21
  • 2251

从 Auto Layout 的布局算法谈性能

如何对 iOS 应用的性能进行优化以及 Auto Layout 到底为什么会影响性能?
  • u010124617
  • u010124617
  • 2016年09月02日 10:30
  • 1990

在UIScrollView中使用Autolayout布局(2)

在《在UIScrollView中使用Autolayout布局(1)》中,我们介绍了一个简单的例子,在UIScrollView中加入了2个使用Autolayout布局的控件。现实的情况当然不止有这么简单...
  • kmyhy
  • kmyhy
  • 2014年12月10日 14:49
  • 15582

ios代码实现Autolayout(自动布局)的简单讲解

简介         原理:iOS6.0之后,苹果优化了UI界面的布局方式,提出了自动布局的概念,和之前的Autoresizing相比功能更强大。子视图基于父视图的自动布局显示。都是父视图去添加子视图...
  • fuzheng0301
  • fuzheng0301
  • 2015年08月14日 10:48
  • 1085

使用AutoLayout布局适配时,如何提前获得AutoLayout完成适配后的子控件的真实frame

当我们使用AutoLayout做适配时,可能会有这样的需求,就是在想在适配完成前就取得子控件的真实frame,来做一些操作。比如我们想把一个正方形的UIImageView剪成一个圆形,这时候就需要这么...
  • linshaoquan
  • linshaoquan
  • 2015年06月19日 02:01
  • 3875

第三方库Masonry自动布局AutoLayout使用

布局:    1. 放在哪  坐标  CGPoint(x, y)    2. 有多大  尺寸  CGSize(width, height) 布局方式:    1.绝对布局(FrameLayout)也...
  • vbirdbest
  • vbirdbest
  • 2016年03月02日 14:26
  • 2059
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Autolayout 自动布局
举报原因:
原因补充:

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