• 关于使用第三方库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

  • 相关阅读:
    Linux C下的正则表达式
    中英文i18 vue参数传递
    es map的用法
    webpack中publicPath问题
    prop中如何获取vue data中的数据 中英文方案
    利用map reduce方法将对象转成数组
    WPF 踩坑笔记2
    WPF 踩坑笔记1
    RabbitMQ 高阶用法 之 x-expire 过期时间设置
    JANUSEC应用网关1.0发布,提供一站式安全交付能力
  • 原文地址:https://www.cnblogs.com/xdios/p/4499202.html
Copyright © 2020-2023  润新知