视图的框架不会改变
Posted
技术标签:
【中文标题】视图的框架不会改变【英文标题】:view's frame don't change 【发布时间】:2019-04-30 08:07:45 【问题描述】:我有一个表格视图。当重新加载数据时,我将配置单元格和更新约束。在调用该单元格的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 的边界不会改变
【问题讨论】:
mas_updateConstraints 仅在您更改约束的常量时才有效,您是否有 Masonry 可以更新的宽度约束?第二部分代码的目的是什么?你这里有事吗? @LorenzOliveto 在向 activityNameView 添加掩码之前获取边界 【参考方案1】:默认实现使用您设置的任何约束来确定任何子视图的大小和位置。
layoutSubviews
只计算其子视图的大小和位置。它不会布置整个视图子树。
在UITableViewCell.layoutSubviews
之后,只有content view
的框架是对的。
修复布局的更简单方法是在layoutSubviews
中调用contentView.layoutIfNeeded
。
【讨论】:
以上是关于视图的框架不会改变的主要内容,如果未能解决你的问题,请参考以下文章