「这是我参与2022首次更文挑战的第14天,活动详情查看:2022首次更文挑战」。
引言
应用场景:
- 下级订货单不展示政策信息
- 上下级订货清单展示不同的子视图
本级的订货清单不显示分配终端按钮子视图
下级代理商的订货清单显示分配终端按钮子视图
- 入库单详情界面未审核状态时展示审核按钮,否则隐藏审核按钮)
I 使用MASConstraint的安装与移除进行动态控制
具体使用方法: 1.定义 MASConstraint 属性 2.存储MASConstraint 属性 3. 根据特定条件进行移除和卸载特定的约束
1.1 下级订货单不展示政策信息
[self.noLab mas_updateConstraints:^(MASConstraintMaker *make) {
self.makeheight4noLab = make.height.mas_equalTo(kAdjustRatio(0));
}];
if(models.isLowerOrder){//下级不展示 政策信息
[self.makeheight4noLab install];
}else{
[self.makeheight4noLab uninstall];
}
1.2 入库单详情界面未审核状态展示审核按钮,否则隐藏。
- 前后效果对比
具体使用方法:
1.1 定义 MASConstraint 属性
1.2 存储MASConstraint 属性
1.3 根据使用包含特定字段models.tradeNo进行移除和卸载特定的约束
- 定义 MASConstraint 属性
/**
用于图片底部约束的移除与安装
*/
@property MASConstraint *makebottomequalToWeakSelf4imgV;
- 存储MASConstraint 属性
__weak __typeof__(self) weakSelf = self;
[self.imgV mas_updateConstraints:^(MASConstraintMaker *make) {
self.makebottomequalToWeakSelf4imgV = make.bottom.equalTo(weakSelf).offset(-kAdjustRatio(14));
}];
- 根据使用包含特定字段models.tradeNo进行移除和卸载特定的约束
if(!weakSelf.viewModel.isShowBottomBtn){
[self.makebottomequalToWeakSelf4TV install];
}else{
[self.makebottomequalToWeakSelf4TV uninstall];
}
II 更新视图的高度约束来动态控制子视图按钮的显示与隐藏
需求: 动态控制子视图按钮的显示与隐藏
例子:本级的订货清单不显示
分配终端按钮子视图 下级代理商的订货清单显示分配终端按钮子视图
根据模型的上下级类型控制视图的高度的约束,进而控制视图地显示与隐藏
- 定义分配终端按钮属性
/**
分配终端按钮
*/
@property (strong, nonatomic) QCTStoreOrderButton *allocationBtn;
- (QCTStoreOrderButton *)allocationBtn{
if (!_allocationBtn) {
QCTStoreOrderButton *tmp = [[QCTStoreOrderButton alloc]init];
_allocationBtn = tmp;
[tmp setTitle:QCTLocal(@"分配终端") forState:UIControlStateNormal];
__weak __typeof__(self) weakSelf = self;
[self addSubview:tmp];
[tmp mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(kAdjustRatio(25));
make.width.mas_greaterThanOrEqualTo(kAdjustRatio(70));
make.right.equalTo(weakSelf).offset(-kAdjustRatio(kSideMargin));
make.top.equalTo(weakSelf.quantityAllottedLab.mas_bottom).offset(kAdjustRatio(6));
make.bottom.equalTo(weakSelf).offset(-kAdjustRatio(13));
// make.size.mas_equalTo(CGSizeMake(kAdjustRatio(74), kAdjustRatio(28)));
}];
[tmp.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(kAdjustRatio(3));
make.right.offset(kAdjustRatio(-3));
}];
tmp.titleLabel.textAlignment = NSTextAlignmentCenter;
}
return _allocationBtn;
}
- 根据模型的上下级类型控制视图的高度的约束,进而控制视图地显示与隐藏
__weak __typeof__(self) weakSelf = self;
[self.allocationBtn mas_updateConstraints:^(MASConstraintMaker *make) {
if(!models.isLowerOrder){// "isLowerOrder" : "false", 本级
make.top.equalTo(weakSelf.quantityAllottedLab.mas_bottom).offset(kAdjustRatio(0));
make.height.mas_equalTo(kAdjustRatio(0));
}else{// 下级
make.top.equalTo(weakSelf.quantityAllottedLab.mas_bottom).offset(kAdjustRatio(6));
make.height.mas_equalTo(kAdjustRatio(30));
}
}];
see also
由于篇幅原因,更多内容请关注 #小程序:iOS逆向,只为你呈现有价值的信息,专注于移动端技术研究领域;更多服务和咨询请关注#公众号:iOS逆向。