当前位置: 首页 > news >正文

iOS学习—制作全局遮罩

 在.h文件中线声明show()方法

- (void)show;

.m文件中添加全屏遮罩,在遮罩上添加了一个选择框并添加了底部弹出的动画,可自行在其中添加tableview、pickerview等其他视图,并添加了点击选择框视图外区域隐藏

#import "MaskView.h"@interface MaskView()@property (nonatomic ,strong) UIView *deliverView; //底部View
@property (nonatomic ,strong) UIView *BGView; //遮罩@end@implementation MaskView- (instancetype)initWithFrame:(CGRect)frame {if ([super initWithFrame:frame]) {}return self;
}- (void)appearClick {// ------全屏遮罩self.BGView = [[UIView alloc] init];self.BGView.frame = [[UIScreen mainScreen] bounds];self.BGView.tag = 100;self.BGView.backgroundColor = [HexColor(@"#000000") colorWithAlphaComponent:0.0];self.BGView.opaque = NO;//--UIWindow的优先级最高,Window包含了所有视图,在这之上添加视图,可以保证添加在最上面UIWindow *appWindow = [[UIApplication sharedApplication] keyWindow];[appWindow addSubview:self.BGView];// ------给全屏遮罩添加的点击事件UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(exitClick)];gesture.numberOfTapsRequired = 1;gesture.cancelsTouchesInView = NO;[self.BGView addGestureRecognizer:gesture];[UIView animateWithDuration:0.3 animations:^{self.BGView.backgroundColor = [HexColor(@"#000000") colorWithAlphaComponent:0.24];}];// ------底部弹出的Viewself.deliverView = [[UIView alloc] init];
//    self.deliverView.frame = CGRectMake(0, SCREEN_WIDTH, SCREEN_WIDTH, 306);ViewRadius(self.deliverView, 16);self.deliverView.backgroundColor = myCellColor;[appWindow addSubview:self.deliverView];[self.deliverView mas_makeConstraints:^(MASConstraintMaker *make) {make.bottom.mas_equalTo(0);make.width.mas_equalTo(kWidth);make.height.mas_equalTo(306);}];// ------View出现动画self.deliverView.transform = CGAffineTransformMakeTranslation(0.01, SCREEN_HEIGHT);[UIView animateWithDuration:0.5 animations:^{self.deliverView.transform = CGAffineTransformMakeTranslation(0.01, 0.01);}];[self.deliverView addSubview:self.tableView];[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {make.top.mas_equalTo(18);make.left.mas_equalTo(0);make.width.mas_equalTo(kWidth);make.height.mas_equalTo(48 * 5);}];}
/*** 功能: View退出*/
- (void)exitClick {NSLog(@"====");[UIView animateWithDuration:0.5 animations:^{self.deliverView.transform = CGAffineTransformMakeTranslation(0.01, SCREEN_HEIGHT);self.deliverView.alpha = 0.2;self.BGView.alpha = 0;} completion:^(BOOL finished) {[self.BGView removeFromSuperview];[self.deliverView removeFromSuperview];}];
}@end

http://www.lryc.cn/news/120045.html

相关文章:

  • GRPC-连接池-GPT
  • YOLOv5、YOLOv8改进: GSConv+Slim Neck
  • 重发布选路问题
  • LinearAlgebraMIT_9_LinearIndependence/SpanningASpace/Basis/Dimension
  • Redission 解锁异常:attempt to unlock lock, not locked by current thread by node id
  • AIGC技术揭秘:探索火热背后的原因与案例
  • 【Linux】总结1-命令工具
  • Git远程仓库
  • Redis缓存设计
  • 华熙生物肌活:2023年版Bio-MESO肌活油性皮肤科学护肤指南
  • mysql索引介绍
  • 说一下什么是tcp的2MSL,为什么客户端在 TIME-WAIT 状态必须等待 2MSL 的时间?
  • 更新spring boot jar包中的BOOT-INF/lib目录下的jar包
  • 纯前端 -- html转pdf插件总结
  • 数据结构和算法基础
  • JS二维数组转化为对象
  • 通过 EPOLL 解决客户端同时连接多服务器的问题
  • JavaScript数据结构【进阶】
  • jQuery编程学习3(jQuery 其他方法: jQuery 拷贝对象、 jQuery 多库共存、jQuery 插件)
  • jvm——垃圾回收机制(GC)详解
  • 计算机组成原理-笔记-第七章
  • 【Linux】网络基础2
  • ​可视化绘图技巧100篇进阶篇(四)-三维簇状柱形图(3D Clustered Bar Chart)
  • 架构设计第八讲:架构 - 理解架构的模式2 (重点)
  • Java中的Maven Shade插件是什么?
  • ffmpeg的bpp是什么?
  • 【C# 基础精讲】类和对象的概念
  • 微信ipad实现批量添加联系人及批量分组
  • Highcharts引入
  • 腾讯云轻量和CVM有什么区别?不都是服务器吗?