随笔 - 262  文章 - 0  评论 - 5  阅读 - 20万

【iOS知识汇】masonry总结 父控件如何自适应子控件。

父控件如何自适应子控件。

比如 父控件加入了几个不知宽度在控件。赋值后,我们需要父控件宽度值。那怎么办?

开发中,对子控件都加入了Mas约束。显示正常。

    UIView* jdAdview =[UIView new];
    [bottomBarBg addSubview:jdAdview];
    [jdAdview mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.equalTo(bottomBarBg);
        make.left.offset(15);
    }];
父控件没有指定宽度。结果。父控件宽度是0.显然不是我要的。
经思考修改:
在子控件最右的约束中加了下面的代码。结果父控年就有宽度了。
  make.right.equalTo(jdAdview.mas_right);
控件想要有frame值。依赖别人。或者被依赖。

 

 



复制代码
 //京东报价
    UIView* jdAdview =[UIView new];
    [bottomBarBg addSubview:jdAdview];
    [jdAdview mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.equalTo(bottomBarBg);
        make.left.offset(15);
    }];
    
    UIImageView*ivIcJd = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"jd_logo"]];
    [jdAdview addSubview:ivIcJd];
    
    [ivIcJd mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.equalTo(jdAdview);
        make.left.equalTo(bottomBarBg).offset(15);
    }];
    
    UILabel *lbJd = [[UILabel alloc] init];
    lbJd.text = @"京东";
    lbJd.font = [UIFont systemFontOfSize :14];
    lbJd.textColor = [UIColor colorWithRed:71/255.0 green:71/255.0 blue:71/255.0 alpha:1/1.0];
    [jdAdview addSubview:lbJd];
    
    UILabel *lbMoeny = [[UILabel alloc] init];
    lbMoeny.text = @"";
    lbMoeny.font = [UIFont systemFontOfSize:11];
    lbMoeny.textColor = [UIColor colorWithRed:236/255.0 green:47/255.0 blue:47/255.0 alpha:1/1.0];
    [jdAdview addSubview:lbMoeny];
    
    UILabel *lbPrice = [[UILabel alloc] init];
    lbPrice.frame = CGRectMake(90, 1026, 39, 22);
    lbPrice.text = @"3168";
    lbPrice.font = [UIFont systemFontOfSize:16];
    lbPrice.textColor = [UIColor colorWithRed:236/255.0 green:47/255.0 blue:47/255.0 alpha:1/1.0];
    
    [jdAdview addSubview:lbPrice];
    
    
    [lbJd mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.equalTo(jdAdview);
        make.left.equalTo(ivIcJd.mas_right).offset(10);
    }];
    
    [lbMoeny mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.equalTo(jdAdview).offset(2);
        make.left.equalTo(lbJd.mas_right).offset(6);
    }];
    
    [lbPrice mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.equalTo(jdAdview);
        make.left.equalTo(lbMoeny.mas_right);
        make.right.equalTo(jdAdview.mas_right);
    }];
    
复制代码

 

posted on   wp7ers  阅读(1223)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示