视图的框架不变

时间:2019-04-30 08:07:45

标签: ios autolayout masonry

我有一个tableview.reload数据时,我将配置单元格并更新约束。在该单元格的layoutSubviews被调用之后,但是视图的框架无法更新

- (void)configModel:(LKSportActivityEventModel *)model {
 //some code before
   CGFloat titleWidth = 100;
   [self.activityNameView mas_updateConstraints:^(MASConstraintMaker *make) {
        make.width.mas_equalTo(titleWidth);
    }];
 //some code after
}
- (void)layoutSubviews {
    [super layoutSubviews];
    [self setCorner:UIRectCornerBottomRight | UIRectCornerTopLeft
             bounds:self.activityNameView.bounds
         cornerSize:CGSizeMake(4, 4)
         targetView:self.activityNameView
              layer:self.activityNameViewShapLayer];
}

activityNameView的边界不变

1 个答案:

答案 0 :(得分:0)

  

默认实现使用您设置的所有约束来确定任何子视图的大小和位置。

layoutSubviews仅计算其子视图的大小和位置。它不会布置整个视图子树。

UITableViewCell.layoutSubviews之后,只有content view的框是正确的。

更容易解决布局问题的方法是在contentView.layoutIfNeeded内部调用layoutSubviews