我有一个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的边界不变
答案 0 :(得分:0)
默认实现使用您设置的所有约束来确定任何子视图的大小和位置。
layoutSubviews
仅计算其子视图的大小和位置。它不会布置整个视图子树。
在UITableViewCell.layoutSubviews
之后,只有content view
的框是正确的。
更容易解决布局问题的方法是在contentView.layoutIfNeeded
内部调用layoutSubviews
。