iOS开发之Masonry(三)

本文将介绍Masonry另一种设置约束的方法:mas_remakeConstraints:意思是重新设置约束。在此之前它会将控件上的所有约束全部移除,在设置新约束。

关键代码如下:

- (void)viewDidLoad {
    [super viewDidLoad];
    
    
    // 创建 red button
    UIButton *redButton = [[UIButton alloc] init];
    redButton.backgroundColor = [UIColor redColor];
    [self.view addSubview:redButton];
    self.redButton = redButton;
    
    [self.redButton addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
    
    
    // 可以给red button更新初始约束
    [self.redButton mas_makeConstraints:^(MASConstraintMaker *make) {
        
        // 约束中点位置为父控件的中点位置
        make.center.equalTo(self.view);
        // 约束宽高初始值为200
        make.width.height.equalTo(@(200));
        
    }];
}


- (void)click {
    // 移除控件上的所有约束,再重新设置约束
    [self.redButton mas_remakeConstraints:^(MASConstraintMaker *make) {
        
        // 约束中点位置为父控件的中点位置
        make.center.equalTo(self.view);
        // 约束宽度不变,仍为200
        make.width.equalTo(@(200));
        
        
        // 约束高度变为50
        make.height.equalTo(@50);
    }];
    
    
    // 开始执行动画,设置约束
    [UIView animateWithDuration:1.0 animations:^{
    
        [self.view layoutIfNeeded];
    }];

}
设置新约束:mas_remakeConstraints。

它会移除之前的约束,再设置新约束。

注意:当约束更新的时候,要想动画执行约束,必须执行layoutIfNeeded方法来执行动画。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值