Masonry学习笔记

1.边距

[bottomView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.equalTo(self.view).offset(0) ;

    }] ;

在和父视图比较时,可以省略掉父视图,如下:

[bottomView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.mas_equalTo(10) ;

    }] ;

需要注意的是必须在和父视图同样方向比较时才可以省略,比如子视图的左边和父视图的左边做约束时才可以省略,子视图的左边和父视图的右边做约束时则不可以比较。

 

2.内边距

[bottomView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.edges.equalTo(self.view).insets(UIEdgeInsetsMake(0, 0, 0, 0)) ;

    }] ;

上面的约束等价于

[bottomView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.top.bottom.right.equalTo(self.view).offset(0) ;

    }] ;

 

3.约束动画

约束做动画相比之下比frame做动画要复杂一点。

@interface ViewController ()

{

    CGFloat _scale ;

    UIButton* _button ;

}

@end

 

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    self.view.backgroundColor=[UIColor whiteColor] ;

    _scale=1.0 ;

    _button=[UIButton buttonWithType:UIButtonTypeCustom] ;

    _button.backgroundColor=[UIColor blueColor] ;

    [_button addTarget:self action:@selector(clickBlue) forControlEvents:UIControlEventTouchUpInside] ;

    [self.view addSubview:_button] ;

    [_button mas_makeConstraints:^(MASConstraintMaker *make) {

        make.height.width.offset(100*_scale).priorityLow() ;

        make.center.equalTo(self.view) ;

        make.width.height.lessThanOrEqualTo(self.view) ;

    }] ;

}

 

-(void)clickBlue

{

   _scale+=0.2 ;

//告诉系统需要更新约束

    [self.view setNeedsUpdateConstraints] ;

// 调用此方法告诉self.view检测是否需要更新约束,若需要则更新,下面添加动画效果才起作用

    [self.view updateConstraintsIfNeeded] ;

    [UIView animateWithDuration:0.5 animations:^{

        [self.view layoutIfNeeded] ;

    }] ;

}

// 你所需要做的动画都在下面这个方法中写

-(void)updateViewConstraints

{

    [super updateViewConstraints] ; 

    [_button mas_updateConstraints:^(MASConstraintMaker *make) {

        make.height.width.offset(100*_scale).priorityLow() ;

        make.center.equalTo(self.view) ;

        make.height.width.lessThanOrEqualTo(self.view) ;

    }] ;

}

 

@end

转载于:https://www.cnblogs.com/zhoujieBlog/p/5886577.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值