美文网首页
iOS Masonry 使用小结

iOS Masonry 使用小结

作者: CaptainRoy | 来源:发表于2019-06-22 14:19 被阅读0次
    • 相邻视图
    -(UIView *)redView
    {
        if (!_redView) {
            _redView = [[UIView alloc] init];
            _redView.backgroundColor = [UIColor redColor];
            [self.view addSubview:_redView];
            [_redView mas_makeConstraints:^(MASConstraintMaker *make) {
                make.width.height.mas_equalTo(60.0f);
                make.top.offset(64.0f);
                make.right.offset(-10.0f);
            }];
        }
        return _redView;
    }
    
    -(UIView *)blueView
    {
        if (!_blueView) {
            __weak typeof(self) weakSelf = self;
            _blueView = [[UIView alloc] init];
            _blueView.backgroundColor = [UIColor blueColor];
            [self.view addSubview:_blueView];
            [_blueView mas_makeConstraints:^(MASConstraintMaker *make) {
                make.width.height.mas_equalTo(70.0f);
                make.right.offset(-10.0f);
                make.top.equalTo(weakSelf.redView.mas_bottom).offset(10.0f);
            }];
        }
        return _blueView;
    }
    
    • 动画
    -(UIView *)orangeView
    {
        if (!_orangeView) {
            _orangeView = [[UIView alloc] init];
            _orangeView.backgroundColor = [UIColor orangeColor];
            [self.view addSubview:_orangeView];
            [_orangeView mas_makeConstraints:^(MASConstraintMaker *make) {
                make.width.height.mas_equalTo(100.0f);
                make.left.offset(100.0f);
                make.top.offset(100.0f);
            }];
        }
        return _orangeView;
    }
    
    __weak typeof(self) weakSelf = self;
        dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0/*延迟执行时间*/ * NSEC_PER_SEC));
        dispatch_after(delayTime, dispatch_get_main_queue(), ^{
            [UIView animateWithDuration:1.0f animations:^{
                [weakSelf.orangeView mas_updateConstraints:^(MASConstraintMaker *make) {
                    make.left.offset(-50.0f);
                }];
                // 告知父类控件绘制,否则动画无法无法生效
                [weakSelf.orangeView.superview layoutIfNeeded];
            }];
        });
    
    • 父类一定要 layoutIfNeeded这个方法否则动画无法生效

    相关文章

      网友评论

          本文标题:iOS Masonry 使用小结

          本文链接:https://www.haomeiwen.com/subject/roamqctx.html