Masonry baseLine的理解

        //displayView
        UIView *displayView = [UIView new];
        displayView.backgroundColor = [UIColor blackColor];
        [self addSubview:displayView];
        
        //keybordView
        UIView *keybordView = [UIView new];
        [self addSubview:keybordView];
        
        [displayView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.left.right.equalTo(self);
            make.height.equalTo(keybordView).multipliedBy(.3f);
        }];
        
        [keybordView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.equalTo(displayView.mas_bottom);
            make.left.right.bottom.equalTo(self);
        }];
        
        //设置显示位置的数字为0
        UILabel *displayNum = [[UILabel alloc]init];
        [displayView addSubview:displayNum];
        displayNum.text = @"0";
        displayNum.font = [UIFont fontWithName:@"HeiTi SC" size:70];
        displayNum.textColor = [UIColor whiteColor];
        displayNum.textAlignment = NSTextAlignmentRight;
        [displayNum mas_makeConstraints:^(MASConstraintMaker *make) {
            make.left.and.right.equalTo(displayView).with.offset(-10);
            make.bottom.equalTo(displayView).with.offset(-10);
        }];
        
        UIView *testView = [UIView new];
        testView.backgroundColor = [UIColor redColor];
        [keybordView addSubview:testView];
        
        [testView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.width.equalTo(keybordView.mas_width).multipliedBy(.25f);
            make.height.equalTo(keybordView.mas_height).multipliedBy(.2f);
            make.left.equalTo(keybordView.mas_left);
            make.baseline.equalTo(keybordView.mas_baseline).multipliedBy(0.2);
        }];
        
        //我的理解mas_baseline是view的底部距离顶部的距离。注意参照点是顶部
        //make.baseline.equalTo(keybordView.mas_baseline).multipliedBy(1);
        //等价testView的底部距离keybordView顶部的距离 = keybordView的底部距离距离顶部的距离 乘以 1
屏幕快照 2016-04-26 下午3.08.34.png
注解如下:

displayView 黑色区域
keybordView 图中白色区域

现在要把红色区域添加到白色区域

详细代码如下:

        UIView *testView = [UIView new];
        testView.backgroundColor = [UIColor redColor];
        [keybordView addSubview:testView];
        
        [testView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.width.equalTo(keybordView.mas_width).multipliedBy(.25f);
            make.height.equalTo(keybordView.mas_height).multipliedBy(.2f);
            make.left.equalTo(keybordView.mas_left);
            make.baseline.equalTo(keybordView.mas_baseline).multipliedBy(0.2);
        }];
主要解释如下这句代码:
make.baseline.equalTo(keybordView.mas_baseline).multipliedBy(0.2);
        }];

  • mas_baseline是view的底部距离顶部的距离。注意参照点是顶部

因为

make.height.equalTo(keybordView.mas_height).multipliedBy(.2f);

testView的高度等于keybordView的高度乘以0.2

所以

  • make.baseline.equalTo(keybordView.mas_baseline).multipliedBy(.2f);

根据代码判断:

  • 等价testView的底部距离keybordView顶部的距离 = keybordView的底部距离距离顶部的距离 乘以 0.2

刚好和高度吻合

所以testView显示的位置就刚好在keybordView的左上角的位置。顶部和keyboardView的顶部吻合。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Masonry是一个轻量级的布局框架,拥有自己的描述语法,采用更优雅的链式语法封装自动布局,简洁明了并具有高可读性...
    3dcc6cf93bb5阅读 1,826评论 0 1
  • (一)Masonry介绍 Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布...
    木易林1阅读 2,390评论 0 3
  • Masonry介绍与使用实践(快速上手Autolayout) 前言 MagicNumber -> autoresi...
    Bonew01阅读 570评论 0 0
  • 转载:https://www.cnblogs.com/liutingIOS/p/5406858.html 一、Ma...
    JasonYuan123阅读 1,417评论 0 1
  • 从小到大,除了在小说中、银屏上读到、看到令人恐惧的事情,在生活中,很少有恐惧的感觉。 很多次回首、无...
    Jenny_Yuan阅读 270评论 0 2