关于使用第三方库masonry的代码实例

今天用自动布局纯代码的方式,并且引用第三方库写了一个微博界面的案例,其中的每个约束之间都是相互联

系的,例如label 和 text 不能设置宽度和高度的具体数值,一旦固定下来,可能会出现错误,例如不会

换行,文字显示不全等等一些列问题,

 

一个技巧,手动布局时,最好从一侧开始进行约束,一般推荐上面和左侧,进行约束,约束时,一定要找一个

固定的控件进行参考,在执行约束,否则,因为优先级的缘故,可能被优先级高的一方拽走,这里是要注意的

地方,下面是截取的一段实例进行了简要的说明,也对自动布局的理解做了如上浅谈。。。

 

 

#import "XDWeiBoViewCell.h"

#import "Masonry.h"

 

 

@interface XDWeiBoViewCell ()

 

@property (nonatomic, weak)UIImageView *iconImage;

@property (nonatomic, weak)UILabel *nameLabel;

@property (nonatomic, weak)UILabel *txtLabel;

@property (nonatomic, weak)UIImageView *picImage;

@property (nonatomic, weak)UIImageView *vipImage;

 

@end

 

@implementation XDWeiBoViewCell

 

+(instancetype)weiboCellWithTableView:(UITableView *)tableView

{

    

 

    NSString *ID = @"weibo";

    XDWeiBoViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

    if (cell == nil) {

        cell = [[XDWeiBoViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];

    }

    

    return cell;

    

}

 

 

 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

{

    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {

        

      

        UIImageView *iconImage = [[UIImageView alloc] init];

        UIImageView *picImage = [[UIImageView alloc] init];

        UIImageView *vipImage = [[UIImageView alloc] init];

        UILabel *nameLabel = [[UILabel alloc] init];

        UILabel *txtLabel = [[UILabel alloc] init];

        

        self.iconImage = iconImage;

        self.picImage = picImage;

        self.nameLabel = nameLabel;

        self.txtLabel = txtLabel;

        self.vipImage = vipImage;

        

        [self.contentView addSubview:iconImage];

        [self.contentView addSubview:picImage];

        [self.contentView addSubview:vipImage];

        [self.contentView addSubview:nameLabel];

        [self.contentView addSubview:txtLabel];

        

        self.nameLabel.numberOfLines = 1;

        self.txtLabel.numberOfLines  = 0;

        self.nameLabel.font = [UIFont systemFontOfSize:15];

        self.txtLabel.font  = [UIFont systemFontOfSize:13];

        

 

        

//        if (self.contentView.constraints) {

//            self.didSetUpConstraints = YES;

//        }else{

//            self.didSetUpConstraints = NO;

//        }

        

    

    

  }

    return self;

}

 

-(void)setWeiboData:(XDWeibo *)weiboData

{

   

    

    

    

    

    

    _weiboData = weiboData;

    

    self.iconImage.image = [UIImage imageNamed:weiboData.icon];

    self.txtLabel.text = weiboData.text;

    self.nameLabel.text = weiboData.name;

    if (weiboData.isVip) {

        self.vipImage.hidden = NO;

        self.vipImage.image = [UIImage imageNamed:@"vip"];

    }else{

        self.vipImage.hidden = YES;

    }

    if (weiboData.picture) {

        

        self.picImage.hidden = NO;

        self.picImage.image = [UIImage imageNamed:weiboData.picture];

    }else{

        self.picImage.hidden = YES;

        self.picImage = nil;

    }

    

    

    

  

    

    

        [self.iconImage mas_makeConstraints:^(MASConstraintMaker *make) {

            make.left.equalTo(self.contentView.mas_left).with.mas_offset(8);

            make.top.equalTo(self.contentView.mas_top).with.mas_offset(8);

            make.width.mas_equalTo(40);

            make.height.mas_equalTo(40);

        }];

        [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {

            make.left.equalTo(self.iconImage.mas_right).with.mas_offset(8);

            make.centerY.equalTo(self.iconImage.mas_centerY);

        }];

        [self.vipImage mas_makeConstraints:^(MASConstraintMaker *make) {

            make.centerY.equalTo(self.iconImage.mas_centerY);

            make.left.equalTo(self.nameLabel.mas_right).with.mas_offset(8);

            make.width.mas_equalTo(10);

            make.height.mas_equalTo(10);

        }];

        [self.txtLabel mas_makeConstraints:^(MASConstraintMaker *make) {

            make.top.equalTo(self.iconImage.mas_bottom).with.mas_offset(8);

            make.left.equalTo(self.contentView.mas_left).with.mas_offset(8);

            make.right.equalTo(self.contentView.mas_right).with.mas_offset(-8);

        }];

        if (weiboData.picture) {

            [self.picImage mas_makeConstraints:^(MASConstraintMaker *make) {

                make.top.equalTo(self.txtLabel.mas_bottom).with.mas_offset(8);

                make.left.equalTo(self.contentView.mas_left).with.mas_offset(8);

                make.height.equalTo(self.picImage.mas_width);

                make.bottom.equalTo(self.contentView.mas_bottom).with.mas_offset(-8);

                make.width.mas_equalTo(80);

            }];

        }else{

            [self.txtLabel mas_makeConstraints:^(MASConstraintMaker *make) {

                make.bottom.equalTo(self.contentView.mas_bottom).with.offset(-8);

            }];

        }

    

   

    

    

    

    [self.contentView setNeedsLayout];

    [self.contentView layoutIfNeeded];

    [self.contentView setNeedsUpdateConstraints];

    [self.contentView updateConstraintsIfNeeded];

}

 

- (void)layoutSubviews

{

    [super layoutSubviews];

}

 

@end

 

转载于:https://www.cnblogs.com/xdios/p/4499202.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值