Masonry 设置布局后,不能捕获Frame

2019-08-14  本文已影响0人  凛冬将至2002

1.问题描述: 主动更新headViewFrame 后,frame未改变,导致后续frame修改操作出错

知识点整理 - AutoLayout 关于更新的几个方区别

- (void)updateFrame:(CGFloat)height{
    
    [self.projectHeadView mas_remakeConstraints:^(MASConstraintMaker *make) {
        make.top.mas_equalTo(0);
        make.leading.trailing.equalTo(self.view);
        make.height.mas_equalTo(420 + height);
        [self.projectHeadView layoutIfNeeded];
    }];
    
//    masonry 设置完约束后,frame不会立即产生变化, 用layoutIfNeeded 刷新页面.
    [self.view layoutIfNeeded];

    [self updateFrame];
    
    // 延迟 0.01s 刷新view, projectHeadView 修改约束后,frame未及时产生变化,延迟后打印出来的是修改后的
//    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//        [self updateFrame];
//    });
}
layoutIfNeeded 注释后 layoutIfNeeded 取消注释
上一篇 下一篇

猜你喜欢

热点阅读