#import “ViewController.h”
#import “Masonry.h”
@interface ViewController ()

@property (nonatomic, strong) UIView *backView;
@property (nonatomic, strong) UIView *backView1;
@property (nonatomic, strong) UILabel *oneLab;
@property (nonatomic, strong) UILabel *twoLab;

@end

@implementation ViewController

  • (void)viewDidLoad {
    [super viewDidLoad];

    //在使用Masonry添加约束之前,需要在addSubview之后才能使用,否则会导致崩溃。
    //在添加约束时初学者经常会出现一些错误,约束出现问题的原因一般就是两种:约束冲突和缺少约束。对于这两种问题,可以通过调试和log排查。
    //之前使用Interface Builder添加约束,如果约束有错误直接就可以看出来,并且会以红色或者黄色警告体现出来。而Masonry则不会直观的体现出来,而是以运行过程中崩溃或者打印异常log体现,所以这也是手写代码进行AutoLayout的一个缺点。

    //mas_makeConstraints() 添加约束
    //mas_remakeConstraints() 移除之前的约束,重新添加新的约束
    //mas_updateConstraints() 更新约束
    //equalTo() 参数是对象类型,一般是视图对象或者mas_width这样的坐标系对象
    //mas_equalTo() 和上面功能相同,参数可以传递基础数据类型对象,可以理解为比上面的API更强大
    //width() 用来表示宽度,例如代表view的宽度
    //mas_width() 用来获取宽度的值。和上面的区别在于,一个代表某个坐标系对象,一个用来获取坐标系对象的值

    [self addSubChildViews];
    [self layoutSubViewsMotion];

    // Do any additional setup after loading the view, typically from a nib.
    }

  • (void)addSubChildViews {
    [self.view addSubview:self.backView];
    [self.backView addSubview:self.backView1];
    [self.backView1 addSubview:self.oneLab];
    [self.backView1 addSubview:self.twoLab];
    }

  • (void)layoutSubViewsMotion {
    [self.backView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.left.mas_equalTo(20);
    make.top.mas_equalTo(20);
    make.right.mas_equalTo(-20);
    make.height.mas_equalTo(200);
    }];

    //一、内边距10===1.
    // [self.backView1 mas_makeConstraints:^(MASConstraintMaker *make) {
    // make.left.mas_equalTo(self.backView).mas_offset(10);
    // make.top.mas_equalTo(self.backView).mas_offset(10);
    // make.right.mas_equalTo(self.backView).mas_offset(-10);
    // make.bottom.mas_equalTo(self.backView).mas_offset(-10);
    // }];
    //========2.或者insets
    [self.backView1 mas_makeConstraints:^(MASConstraintMaker *make) {
    //下、右不需要写负号,insets方法中已经为我们做了取反的操作了
    make.edges.mas_equalTo(self.backView).insets(UIEdgeInsetsMake(10, 10, 10, 10));
    }];

    [_oneLab mas_makeConstraints:^(MASConstraintMaker *make) {
    make.left.top.mas_equalTo(10);
    make.right.mas_equalTo(-10);
    // make.height.mas_equalTo(self.backView1).mas_offset(0);//不设置按照文字适应
    }];
    [_twoLab mas_makeConstraints:^(MASConstraintMaker *make) {
    make.left.mas_equalTo(10);
    make.top.mas_equalTo(self.oneLab.mas_bottom).mas_offset(10);
    make.right.mas_equalTo(self.backView1).mas_offset(-10);

    }];

    //mas_update 更新布局
    [self.backView1 mas_updateConstraints:^(MASConstraintMaker *make) {
    make.bottom.mas_equalTo(self.twoLab);
    }];
    //mas_remake 重新布局
    // [self.backView1 mas_remakeConstraints:^(MASConstraintMaker *make) {
    // make.bottom.mas_equalTo(self.twoLab);
    // }];

    //二、设置约束优先级
    /**
    Masonry为我们提供了三个默认的方法,priorityLow()、priorityMedium()、priorityHigh(),这三个方法内部对应着不同的默认优先级。
    除了这三个方法,我们也可以自己设置优先级的值,可以通过priority()方法来设置。Masonry也帮我们定义好了一些默认的优先级常量,分别对应着不同的数值,优先级最大数值是1000
    */
    //
    // [self.twoLab mas_makeConstraints:^(MASConstraintMaker *make) {
    // make.center.equalTo(self.view);
    // make.width.equalTo(self.view).priorityLow();
    // make.width.mas_equalTo(20).priorityHigh();
    // make.height.equalTo(self.view).priority(200);
    // make.height.mas_equalTo(100).priority(1000);
    // }];

    //三、设置约束比列
    // 设置当前约束值乘以多少,例如这个例子是twoLab的宽度是backView1宽度的0.8倍。
    // [self.twoLab mas_makeConstraints:^(MASConstraintMaker *make) {
    // make.center.equalTo(self.backView1);
    // make.width.equalTo(self.backView1).multipliedBy(0.8);
    // }];

}

  • (UIView *)backView {
    if (_backView == nil) {
    _backView = [[UIView alloc] init];
    _backView.backgroundColor = [UIColor orangeColor];
    }
    return _backView;
    }

  • (UIView *)backView1 {
    if (_backView1 == nil) {
    _backView1 = [[UIView alloc] init];
    _backView1.backgroundColor = [UIColor brownColor];
    }
    return _backView1;
    }

  • (UILabel *)oneLab {
    if (_oneLab == nil) {
    _oneLab = [[UILabel alloc] init];
    _oneLab.backgroundColor = [UIColor cyanColor];
    _oneLab.font = [UIFont systemFontOfSize:13];
    _oneLab.textAlignment = NSTextAlignmentCenter;
    _oneLab.numberOfLines = 0;
    _oneLab.text = @“十五从军征,八十始得归。道逢乡里人:“家中有阿谁?” “遥看是君家,松柏冢累累。”(遥看 一作:遥望)兔从狗窦入,雉从梁上飞。中庭生旅谷,井上生旅葵。舂谷持作饭,采葵持作羹。羹饭一时熟,不知贻阿谁?出门东向看,泪落沾我衣。”;
    }
    return _oneLab;
    }

  • (UILabel *)twoLab {
    if (_twoLab == nil) {
    _twoLab = [[UILabel alloc] init];
    _twoLab.backgroundColor = [UIColor magentaColor];
    _twoLab.font = [UIFont systemFontOfSize:15];
    _twoLab.textAlignment = NSTextAlignmentLeft;
    _twoLab.numberOfLines = 0;
    _twoLab.text = @“涉江采芙蓉,兰泽多芳草。采之欲遗谁,所思在远道。还顾望旧乡,长路漫浩浩。同心而离居,忧伤以终老。”;
    }
    return _twoLab;
    }

over!

iOS Masonry使用相关推荐

  1. iOS Masonry的使用详解

    Masonry是一个轻量级的布局框架,拥有自己的描述语法,采用更优雅的链式语法封装自动布局,简洁明了并具有高可读性,而且同时支持 iOS 和 Max OS X.Masonry是一个用代码写iOS或OS ...

  2. iOS - Masonry自动布局

    简介: 相对于官方的NSLayoutConstraints的的过于繁琐和麻烦,Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简洁明了 并具有高可读性 而且 ...

  3. [iOS]-Masonry的使用

    Masonry介绍 Masonry是一个iOS开发布局框架,可以适配各种机型,相比原生的NSLayoutConstraint,提高了使用容易度和代码的可阅读程度. 首先需要准备的点: 使用Masonr ...

  4. iOS -- masonry的使用

    文章目录 安装masonry 使用masonry masonry基本使用 使用masonry实现视图重叠的demo 安装masonry 根据博客cocoapods安装 masonry使用 完成maso ...

  5. iOS Masonry

    文章目录 Masonry简介 Masonry主要的类和常用api Masonry基本使用 Masonry结构与源码简单解析 Masonry使用技巧与注意事项 Masonry简介 Masonry利用简化 ...

  6. iOS Masonry介绍与使用实践(快速上手Autolayout)

    前言 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-iphone3gs时代 ...

  7. IOS Masonry介绍与使用实践:快速上手Autolayout

    转载大神:http://www.cocoachina.com/ios/20141219/10702.html 前言 MagicNumber -> autoresizingMask -> a ...

  8. IOS Masonry自动布局

    之前项目用Frame布局,这个项目登录用了VFL,后来觉得用Masonry,前天布局TableViewCell时用了下 ,觉得还不错. #import "Masonry.h" #i ...

  9. iOS Masonry详解mas_makeConstraints() 添加约束 mas_remakeConstraints() 移除之前的约束,重新添加新的约束 mas_updateConst

    现在iPhone手机屏幕越来越多, 屏幕适配也越来越重要. Masonry就是为屏幕适配而生的三方框架. Masonry基础API mas_makeConstraints() 添加约束 mas_rem ...

  10. html布局优先级,iOS Masonry 设置布局优先级。

    Masonry 中设置布局优先级需要使用系统方法: 设置抗拉伸性.值越低越容易被拉伸 - (void)setContentHuggingPriority:(UILayoutPriority)prior ...

最新文章

  1. CheckM——国家微生物科学数据中心云工具
  2. spring 找不到applicationContext.xml解决方法
  3. zemax图像模拟_zemax2014免费版
  4. 微信小程序安卓机使用uploadfile提示undefined错误原因
  5. 中科大计算机学院的保研率,中科大2021届保研率44.7%,少年班83.4%,物理计算机人数最多...
  6. ios navigation的返回按钮长按_Android Jetpack架构组件 — Navigation入坑详解 [转]
  7. Android中CardView的简单使用
  8. 学习 wxpython_序
  9. (笔记)堆和栈的区别-两种不同的数据结构
  10. java登录界面命令_Java命令行界面(第13部分):JArgs
  11. 计算机配置界面在那,在哪里设置关机画面?设置为原来的经典界面?
  12. 【转】Linux/ubuntu下apache+svn安装配置
  13. PHP 中 shell_exec() 中的反撇号操作符的变体 可用作后门
  14. python是基于什么原理_Python基于class()实现面向对象原理详解
  15. primefaces_Primefaces CommandLink
  16. 编译OpenCV缺少python27_d.lib的解决方法
  17. html实现点击直接下载文件-前端教程
  18. mysql驱动5.1_mysql jdbc 驱动 5.1.26 官方最新版
  19. vue 会将连续空格自动合并成一个空格(避免空格合并)
  20. 高级运维工程师证书_高级运维工程师的具体职责说明

热门文章

  1. 泉州php编程学校,泉州五中校园网络平台【Moodle平台与校园网络整合】...
  2. 卡塞格伦天线 matlab,2018年哈工大电子与信息工程学院复试指导
  3. 任何颜色,只要它是白色的—可以是我们需要的明确的颜色质量指标吗?---凯利讯半导体
  4. PostgreSQL9.4基于pglogical发布订阅功能实现及操作
  5. 有什么值得选择的VPS主机控制面板?
  6. 软件工程导论——需求分析总结
  7. 安陆唐明惠 不堪回首的高考
  8. 笔记本花屏维修,经验让我大走弯路
  9. MacBook如何删除卸载软件
  10. STM32的USART_GetFlagStatus和USART_GetITStatus