10.6 Masonry-baseline约束

2019-04-26  本文已影响0人  草根小强

#import "ViewController.h"
#import "Masonry.h"
#import "CustomView.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    CustomView *item1 = [[CustomView alloc]init];
    CustomView *item2 = [[CustomView alloc]init];
    CustomView *item3 = [[CustomView alloc]init];
    item1.backgroundColor = [UIColor redColor];
    item2.backgroundColor = [UIColor blueColor];
    item3.backgroundColor = [UIColor greenColor];
    
    [self.view addSubview:item1];
    [self.view addSubview:item2];
    [self.view addSubview:item3];
    
    item1.content = @"sdksdlaksdjklasdjklasdjklas";
    item2.content = @"asdkasdmkasdmksadkasdklasdmklasdmklas";
    item3.content = @"asdmkaslkdmsalkdklasdmsalkdmsaldmskldmkslad";
    
    item1.imageV = [UIImage imageNamed:@"dog_small"];
    item2.imageV = [UIImage imageNamed:@"dog_middle"];
    item3.imageV = [UIImage imageNamed:@"dog_big"];
    
    //创建子视图/给子视图设置约束 要在给父视图设置约束之前
    [item1 createSubViews];
    [item2 createSubViews];
    [item3 createSubViews];
    
    [item1 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.mas_equalTo(10);
        make.top.mas_equalTo(200);
        make.width.mas_equalTo(80);
//        make.height.mas_equalTo(100);
    }];
    
    [item2 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.mas_equalTo(item1.mas_right).offset(10);
        make.baseline.mas_equalTo(item1.mas_baseline);
         make.width.mas_equalTo(80);
//        make.height.mas_equalTo(100);
    }];
    
    [item3 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.mas_equalTo(item2.mas_right).offset(10);
        make.baseline.mas_equalTo(item2.mas_baseline);
        make.width.mas_equalTo(80);
//        make.height.mas_equalTo(100);
    }];
    
}
@end

#import <UIKit/UIKit.h>

@interface CustomView : UIView

@property (nonatomic,copy) NSString *content;

@property (nonatomic,strong) UIImage *imageV;

@property (nonatomic,strong) UIView *baseLineView;


- (void)createSubViews;
@end
#import "CustomView.h"
#import "Masonry.h"

@implementation CustomView


- (instancetype)init{
    
    if (self = [super init]) {
        
//        [self createSubViews];
        
    }
    return self;
}

- (void)createSubViews{
    
    UIImageView *subImageV = [[UIImageView alloc]init];
    subImageV.image = self.imageV;
    //把subImageV的底部线作为baseline
    self.baseLineView = subImageV;
    
    [self addSubview:subImageV];
    
    UILabel *label = [[UILabel alloc]init];
    label.numberOfLines = 0;
    label.text = self.content;
    [self addSubview:label];
    
    [subImageV mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.top.right.mas_equalTo(self).offset(0);
    }];
    
    [label mas_makeConstraints:^(MASConstraintMaker *make) {
        
        make.left.right.bottom.mas_equalTo(self).offset(0);
        
        make.top.mas_equalTo(subImageV.mas_bottom).offset(4);
    }];
}
//重写
- (UIView *)viewForBaselineLayout{
    
    return self.baseLineView;
}
@end
Masonry-baseline约束.png
上一篇 下一篇

猜你喜欢

热点阅读