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
相关文章:
iOS学习—制作全局遮罩
在.h文件中线声明show()方法 - (void)show; .m文件中添加全屏遮罩,在遮罩上添加了一个选择框并添加了底部弹出的动画,可自行在其中添加tableview、pickerview等其他视图,并添加了点击选择框视图外区域隐藏 #import "MaskView.h"…...
GRPC-连接池-GPT
gRPC Dart 管理优化 User grpc for dart 如何统一管理多个Client的创建和销毁,给我一个最优解 ChatGPT 对于在Dart中使用gRPC创建和销毁多个Client的统一管理,您可以使用一个单例模式的管理类来实现最优解。 首先,创建一个管理类,…...
YOLOv5、YOLOv8改进: GSConv+Slim Neck
论文题目:Slim-neck by GSConv: A better design paradigm of detector architectures for autonomous vehicles 论文:https://arxiv.org/abs/2206.02424 代码:https://github.com/AlanLi1997/Slim-neck-by-GSConv 在计算机视觉领域&#x…...
重发布选路问题
一、思路 ; 1.增加不优选路开销解决选路不佳问题 2.用增加开销的方式使R1 不将ASBR传的R7传给另一台ASBR解决R1、R2、R3、R4pingR7环回环路 二、操作 ------IP地址配置如图 1.ospf及rip的宣告 rip: [r1]rip 1 [r1-rip-1]version 2 [r1-rip-1]netw…...
LinearAlgebraMIT_9_LinearIndependence/SpanningASpace/Basis/Dimension
这节课我们主要学习一下(Linear Independence)线性无关,(spanning a space)生成空间,(basis)基和(dimension)维度。同时我们要注意这四个很重要的基本概念的描述对象,我们会说向量组线性无关,由一个向量组生成的空间,子…...
Redission 解锁异常:attempt to unlock lock, not locked by current thread by node id
标题:解锁异常:Redission中的"attempt to unlock lock, not locked by current thread by node id"问题分析与解决方案 在分布式系统中,锁是常用的同步机制,用于保护共享资源,避免并发冲突。Redission是一个…...
AIGC技术揭秘:探索火热背后的原因与案例
文章目录 什么是AIGC技术?为何AIGC技术如此火热?1. 提高效率与创造力的完美结合2. 拓展应用领域,创造商业价值3. 推动技术创新和发展 AIGC技术案例解析1. 艺术创作:生成独特的艺术作品2. 内容创作:实时生成各类内容3. …...
【Linux】总结1-命令工具
文章目录 基础指令shell命令以及运行原理Linux权限粘滞位工具 基础指令 ls、pwd、touch、mkdir、netstat、cp、mv、cd、tar、zip、unzip、grep、pstack、ps、rm、cat、more、less、head、tail、find、ulimit -a、clear、whoami、man touch:创建文件,也包…...
Git远程仓库
Git远程仓库 推送拉取git fetchgit pull 克隆 推送 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。那要怎么实现这种分布呢?我们可以找一台电脑充当服务器,也就是扮演远程仓库的角色,一直都处于开机…...
Redis缓存设计
缓存能够有效地加速应用的读写速度,同时也可以降低后端负载,对日常应用的开发至关重要。但是将缓存加入应用架构后也会带来一些问题,本文将针对这些问题介绍缓存使用技巧和设计方案。 1缓存的收益和成本 下图左侧为客户端直接调用存储层的架…...
华熙生物肌活:2023年版Bio-MESO肌活油性皮肤科学护肤指南
关于报告的所有内容,公众【营销人星球】获取下载查看 核心观点 以悦己和尝鲜为消费动机的他们,已迅速崛起成为护肤行业的焦点人群。而在新生代护肤议题中,“油性皮肤护理”已经成为一个至关重要的子集。今天,中国新生代人口数量…...
mysql索引介绍
索引可以提升查询速度,会影响where查询,以及order by排序。MySQL索引类型如下: 从索引存储结构划分:B Tree索引、Hash索引、全文索引 从应用层次划分:主键索引、唯一索引、单值索引、复合索引 从索引键值类型划分&am…...
说一下什么是tcp的2MSL,为什么客户端在 TIME-WAIT 状态必须等待 2MSL 的时间?
1.TCP之2MSL 1.1 MSL MSL:Maximum Segment Lifetime报文段最大生存时间,它是任何报文段被丢弃前在网络内的最长时间 1.2为什么存在MSL TCP报文段以IP数据报在网络内传输,而IP数据报则有限制其生存时间的TTL字段,并且TTL的限制是基于跳数 1.3…...
更新spring boot jar包中的BOOT-INF/lib目录下的jar包
更新spring-boot jar包中的BOOT-INF/lib目录下的jar包 场景 需要更新lib目录下某个jar包的配置文件 失败的解决方法 用解压软件依次打开spring-boot jar包(设为a.jar)、BOOT-INF/lib目录下的jar包(设为b.jar),然后修改…...
纯前端 -- html转pdf插件总结
一、html2canvasjsPDF(文字会被截断): 将HTML元素呈现给添加到PDF中的画布对象,不能仅使用jsPDF,需要html2canvas或rasterizeHTML html2canvasjsPDF的具体使用链接 二、html2pdf(内容显示不全文字会被截断…...
数据结构和算法基础
巩固基础,砥砺前行 。 只有不断重复,才能做到超越自己。 能坚持把简单的事情做到极致,也是不容易的。 数据结构和算法 程序 数据结构算法 数据结构是算法的基础 问题1:字符串匹配问题。str1 是否完全包含 str2 1)暴…...
JS二维数组转化为对象
将二维数组转化为对象的形式 转之前的数据: 转之后: const entries new Map([[foo, bar],[baz, 42],[beginNode, 202212151048010054],[beginNode, 202212151048447710],]); console.log(entries)const obj Object.fromEntries(entries);console.lo…...
通过 EPOLL 解决客户端同时连接多服务器的问题
项目需求是 程序上 同时配置了多个服务端 设备 每隔一段时间需要 比如1分钟 连一下服务器看下是否连通 并将结果上报给平台 原来是用线程池来做的 具体大概就是 定时器到了之后 遍历设备列表 找到设备之后 通过 socket连接 发送一个指令 等待服务器返回 用来检查是…...
JavaScript数据结构【进阶】
注:最后有面试挑战,看看自己掌握了吗 文章目录 使用 splice() 添加元素使用 slice() 复制数组元素使用展开运算符复制数组使用展开运算符合并数组使用 indexOf() 检查元素是否存在使用 for 循环遍历数组中的全部元素创建复杂的多维数组将键值对添加到对象…...
jQuery编程学习3(jQuery 其他方法: jQuery 拷贝对象、 jQuery 多库共存、jQuery 插件)
目录 jQuery 其他方法 1. jQuery 拷贝对象 $.extend()方法 2. jQuery 多库共存 问题概述: 客观需求: jQuery 解决方案:(两种方式) 3. jQuery 插件 jQuery 插件常用的网站: jQuery 插件使用步骤&…...
最后50天,PMP还能过吗?能,只要你别把PMBOK当《圣经》啃
大家好,我是那个在倒数50天才开始认真备考、最后竟然通关的懒癌患者阿陈。今天是4月23日。先给你一个灵魂拷问——报名截止了吗?没有。全国统一报名截止时间是今天下午16:00。没错,这篇文章发出来的时候,报名通道还在开着…...
Weka机器学习平台入门与实践指南
1. Weka机器学习平台入门指南Weka作为一款开源的机器学习工作台,以其直观的图形界面和丰富的算法集合,成为了初学者进入机器学习领域的理想起点。不同于需要编写大量代码的传统机器学习开发方式,Weka让用户能够通过可视化操作快速体验完整的机…...
告别编译噩梦:用Docker容器5分钟快速部署Neper多晶建模环境
告别编译噩梦:用Docker容器5分钟快速部署Neper多晶建模环境 第一次接触Neper时,我被它强大的多晶建模能力吸引,但随即陷入长达两天的依赖安装地狱。GSL、NLOPT、OpenMP、Gmsh...每个组件都需要特定版本,编译错误像打地鼠一样此起彼…...
云原生入门系列|第 3 集:一文吃透 Pod 生命周期!零基础看懂容器创建、重启与销毁全流程
前言各位云原生入门的小伙伴们大家好,欢迎回到我们《云原生入门系列》专栏。在上一集第 2 篇内容中,我们带着大家通过minikube搭建完了专属的 K8s 本地实验环境,拥有了自己可以随意折腾、练手的单机 K8s 集群;而在系列开篇第 1 集…...
Vue2.0 + ElementUI登录页开发避坑指南:我踩过的5个坑(路由守卫、样式冲突、表单验证)
Vue2.0 ElementUI登录页开发避坑指南:我踩过的5个坑 去年接手公司后台管理系统重构时,我负责的第一个模块就是登录页。本以为照着ElementUI文档复制粘贴就能搞定,结果从路由守卫到样式污染,踩的坑比写的代码还多。今天就把这些&q…...
Maya glTF插件完整指南:如何高效解决3D模型跨平台导出难题
Maya glTF插件完整指南:如何高效解决3D模型跨平台导出难题 【免费下载链接】maya-glTF glTF 2.0 exporter for Autodesk Maya 项目地址: https://gitcode.com/gh_mirrors/ma/maya-glTF 在当今多平台3D内容创作时代,Maya glTF插件已成为连接Autode…...
m4s-converter:5分钟掌握B站缓存视频无损转换技巧
m4s-converter:5分钟掌握B站缓存视频无损转换技巧 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾在B站缓存了珍贵的学习视频…...
告别臃肿模拟器:如何在Windows上原生运行安卓应用的三大突破方案
告别臃肿模拟器:如何在Windows上原生运行安卓应用的三大突破方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了每次运行手机应用都需要启动沉…...
LyricsX:macOS上专业的桌面歌词显示与音乐播放器集成方案
LyricsX:macOS上专业的桌面歌词显示与音乐播放器集成方案 【免费下载链接】LyricsX 🎶 Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/ly/LyricsX LyricsX是一款专为macOS平台设计的专业级歌词显示应用程序ÿ…...
SpringBoot项目里那个诡异的NoClassDefFoundError,我排查了3小时才搞明白
SpringBoot项目中那个诡异的NoClassDefFoundError:一次深度排查实录 那天凌晨2点,生产环境的报警短信把我从睡梦中惊醒——核心服务启动失败,日志里赫然躺着NoClassDefFoundError: Could not initialize class com.utils.EncryptHelper。这个…...
