一同养成写作习惯!这是我参加「日新计划 4 月更文应战」的第14天,点击检查活动概况。
前语
需求:将当时的VC的界面作为另一个VC的布景图片(在当时视图中推出别的一个布景透明的视图控制器)
the content is displayed over another view controller’s content 具体的使用场景:
下单的的付款概况
发布产品的挑选产品类目
反应页面
码牌类设备(含电子立牌、静态码牌、码牌喇叭一体机)添加收款二维码检查和下载功能 下单的的付款概况
这个界面属于独立的付出插件
完成思路:
使用体系自带的modal款式:UIModalPresentationOverCurrentContext
- A presentation style where the content is displayed over another view controller’s content
)截取当时屏幕
I 、完成计划
推荐使用体系自带的modal款式完成需求,由于功能更好,完成也简略
1.1 使用体系自带的modal款式
设置modalPresentationStyle为UIModalPresentationOverCurrentContext
,并设置蒙版色彩
CategoryViewController *tmp = [CategoryViewController new];
tmp.modalPresentationStyle = UIModalPresentationOverCurrentContext;
//设置蒙版色彩
[tmp view].backgroundColor = STModalWindowDefaultBackgroundColor;
[self.navigationController presentViewController:tmp animated:YES completion:^{
}];
子视图布景色彩可根据需要为clearColor,或许其他色彩。
- (void)viewDidLoad {
[super viewDidLoad];
//设置VCView布景色彩为clearColor
[self vcView].backgroundColor =[UIColor clearColor] ;
}
设置点击蒙版回到上个界面
设置tableView的点击事情优先级,低于cell的选中事情以及按钮的点击事情
UIControlEventTouchUpInside
- (CRMSelectedWechantActivityTypeV *)vcView{
if (!_vcView) {
CRMSelectedWechantActivityTypeV *tmp = [[CRMSelectedWechantActivityTypeV alloc] initWithViewModel:self.viewModel];
_vcView= tmp;
__weak __typeof__(self) weakSelf = self;
[self.view addSubview:tmp];
[tmp mas_makeConstraints:^(MASConstraintMaker *make) {
CGFloat CategoriesH =1*(142+12);
make.height.mas_equalTo(kAdjustRatio(78+CategoriesH+90));
make.left.equalTo(weakSelf.view).offset(kAdjustRatio(0));
make.bottom.equalTo(weakSelf.view);
make.right.equalTo(weakSelf.view).offset(-kAdjustRatio(0));
// 设置子视图约束(高度)
make.height.equalTo(weakSelf.view).multipliedBy(0.45).offset(kAdjustRatio(self.viewModel.selectedplatProductCategories.count*50+50));
}];
UITapGestureRecognizer *cutTap = [[UITapGestureRecognizer alloc] init];
[[cutTap rac_gestureSignal] subscribeNext:^(id x) {
[weakSelf dismissViewControllerAnimated:YES completion:nil];
}];
[weakSelf.view addGestureRecognizer:cutTap];
UITapGestureRecognizer *cutTap1 = [[UITapGestureRecognizer alloc] init];
[[cutTap1 rac_gestureSignal] subscribeNext:^(id x) {
NSLog(@" 设置tableView的点击事情优先级,低于cell的选中事情 ");
}];
cutTap1.cancelsTouchesInView = NO;// 设置tableView的点击事情优先级,低于cell的选中事情
[tmp.tableView addGestureRecognizer:cutTap1];
}
return _vcView;
}
效果:发布产品的挑选产品类目
下载地址:download.csdn.net/download/u0…
文章地址:kunnan.blog.csdn.net/article/det…
视频地址:live.csdn.net/v/167208
产品运营类目挑选视图的使用场景: 1、发布产品时挑选产品类目 2、商户进件挑选运营类目 3、购物类app下单界面的产品类目筛选
你可以使用运转API进行全局控制modal的款式
从CSDN资源下载完整demo源码:download.csdn.net/download/u0… 灵活控制模态展示的视图款式的文章:blog.csdn.net/z929118967/… 更多内容请重视大众号:iOS逆向
- (NSMutableArray *)OverCurrentContextClasss{
if(_OverCurrentContextClasss == nil){
_OverCurrentContextClasss = [NSMutableArray array];
//.. 发布产品- 挑选产品类目
[_OverCurrentContextClasss addObject:@"ERPSelect_commodity_categoryViewController"];
// 图片浏览器
[_OverCurrentContextClasss addObject:@"KNImageBrowserViewController"];
// 挑选微信活动
[_OverCurrentContextClasss addObject:@"CRMSelectedWechantActivityTypeVC"];
}
return _OverCurrentContextClasss;
}
1.2 截取当时视图
反应页面主动生成截图
留意:截图在弹反应页面之前create 【原理文章】(https://kunnan.blog.csdn.net/article/details/113444297)
1.3 关于dismiss的使用总结
使用1:自定义WebViewController,使用完相册之后导致WebView 所在的控制器也被干掉的问题
问题:苹果的一个特性。当模态出N个ViewController之后,只需要dismiss恣意一个,都会dismiss它之后的所有模态试图 ,因此会导致modal模态出来的UIViewController中WebView的H5弹出Camera/ImagePicker 时,当UIDocumentMenuViewController消失的时分会导致WebView 所在的控制器也被干掉。
处理思路 所以使dismissViewControllerAnimated调用一次,或许让UIDocumentMenuViewController找不到presentingViewController即可。
获取demo源码,请重视大众号:iOS逆向 github.com/zhangkn/KNU…
使用2:想要一次性把模态出来的所有ViewController dismiss,只需要使用presentingViewController进行dismiss即可
[t setDissblock:^(id _Nonnull sender) {
[weakSelf.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}];
II 前置小常识
2.1 二维码生成
使用原生API封装库 pod 'LBXScan/LBXNative','~> 2.5'
self.iconV.image = [LBXScanNative createQRWithString:models.content4code QRSize:CGSizeMake(kAdjustRatio(180), kAdjustRatio(180))];
2.2 保存图片到相册
blog.csdn.net/z929118967/…
- 需求: 码牌类设备(含电子立牌、静态码牌、码牌喇叭一体机)添加收款二维码检查和下载功能
- 视图与保存的图片宽高的关系:
视图的宽度与屏幕的宽度越挨近,图片越明晰。
保存的视图的宽,假如是和屏幕的宽共同,则是1:1的关系保存。
假如保存的视图的宽<屏幕的宽,则图片是以屏幕的宽进行放大保存,但是终究保存的图片的宽会等于屏幕的宽。
- 添加权限:
<key>NSPhotoLibraryAddUsageDescription</key>
<string>需要拜访您的相册,用于收款码图片的下载</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>App会在自定义会员的时分使用您的相册权限</string>
假如没添加对应的错误信息
#366012 SIGABRT
libsystem_kernel.dylib ___abort_with_payload
see also
git 代码分支办理教程
mp.weixin.qq.com/s/-63si1cRx…