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

ios swift alert 自定义弹框 点击半透明部分弹框消失

文章目录

  • 1.BaseAlertVC
  • 2.BindFrameNumAlertVC

请添加图片描述

1.BaseAlertVC

import UIKitclass BaseAlertVC: GLBaseViewController {let centerView = UIView()override func viewDidLoad() {super.viewDidLoad()view.backgroundColor = UIColor(displayP3Red: 0, green: 0, blue: 0, alpha: 0.3)let tap = UITapGestureRecognizer.init(target: self, action: #selector(tapView))tap.delegate = selfview.addGestureRecognizer(tap)view.addSubview(centerView)}@objc func tapView() {dismiss()}}extension BaseAlertVC: UIGestureRecognizerDelegate {func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {if (touch.view?.isDescendant(of: centerView))! {return false;}else{return true;}}}

2.BindFrameNumAlertVC

import UIKit
import XHToastSwiftclass BindFrameNumAlertVC: BaseAlertVC,UITextFieldDelegate {let textField = UITextField()func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {// Get the new text after the user enters or deletes characterslet newText = (textField.text as NSString?)?.replacingCharacters(in: range, with: string) ?? ""// Limit the text field to 15 charactersreturn newText.count <= 15}override func viewDidLoad() {super.viewDidLoad()centerView.backgroundColor = .whitecenterView.snp.makeConstraints { make inmake.width.equalTo(300)make.height.equalTo(250)make.center.equalToSuperview()}centerView.layer.cornerRadius = 10let titleLabel = UILabel()centerView.addSubview(titleLabel)titleLabel.text = LocalizableManager.localValue("binding_frame_number")titleLabel.snp.makeConstraints { make inmake.centerX.equalToSuperview()make.top.equalToSuperview().offset(20)}textField.delegate = selftextField.backgroundColor = UIColor.rgbColor(red: 219, green: 219, blue: 219)textField.keyboardType = .numberPadtextField.textAlignment = .centercenterView.addSubview(textField)textField.snp.makeConstraints { make inmake.centerX.equalToSuperview()make.width.equalTo(220)make.height.equalTo(50)make.top.equalTo(titleLabel.snp_bottom).offset(30)}textField.layer.cornerRadius = 10//限制textField只能输入15个字符let alertLabel = UILabel()alertLabel.numberOfLines = 0alertLabel.font = UIFont(name: "PingFang SC", size: 13)alertLabel.textColor = .grayalertLabel.text = LocalizableManager.localValue("input_corresponding_code")centerView.addSubview(alertLabel)alertLabel.snp.makeConstraints { make inmake.top.equalTo(textField.snp_bottom).offset(10)make.left.equalTo(textField).offset(10)make.right.equalTo(textField)}let sureBtn = UIButton()sureBtn.backgroundColor = UIColor.rgbColor(red: 219, green: 219, blue: 219)sureBtn.setTitleColor(.black, for: .normal)sureBtn.addTarget(self, action: #selector(sureBtnClick), for: .touchUpInside)sureBtn.setTitle(LocalizableManager.localValue("sure"), for: .normal)centerView.addSubview(sureBtn)sureBtn.snp.makeConstraints { make inmake.left.equalToSuperview().offset(30)make.bottom.equalToSuperview().offset(-20)make.width.equalTo(100)make.height.equalTo(40)}sureBtn.layer.cornerRadius = 20let cancelBtn = UIButton()cancelBtn.backgroundColor = newUIYellowcancelBtn.addTarget(self, action: #selector(cancelBtnClick), for: .touchUpInside)cancelBtn.setTitle(LocalizableManager.localValue("cancel"), for: .normal)centerView.addSubview(cancelBtn)cancelBtn.snp.makeConstraints { make inmake.right.equalToSuperview().offset(-30)make.bottom.equalToSuperview().offset(-20)make.width.equalTo(100)make.height.equalTo(40)}cancelBtn.layer.cornerRadius = 20}@objc func sureBtnClick(){print(textField.text)guard let str = textField.text,str.count == 15 else {XHToast.showBottomWithText(LocalizableManager.localValue("input_only_six_num"))return}}@objc func cancelBtnClick(){}}

相关文章:

ios swift alert 自定义弹框 点击半透明部分弹框消失

文章目录 1.BaseAlertVC2.BindFrameNumAlertVC 1.BaseAlertVC import UIKitclass BaseAlertVC: GLBaseViewController {let centerView UIView()override func viewDidLoad() {super.viewDidLoad()view.backgroundColor UIColor(displayP3Red: 0, green: 0, blue: 0, alpha:…...

HCIP STP(生成树)

目录 一、STP概述 二、生成树协议原理 三、802.1D生成树 四、STP的配置BPDU 1、配置BPDU的报文格式 2、配置BPDU的工作过程 3、TCN BPDU 4、TCN BPDU的工作过程 五、STP角色选举 1、根网桥选举 2、根端口选举 3、指定端口选举 4、非指定端口选举 六、STP的接口状…...

【Unity开发必备】100多个 Unity 学习网址 资源 收藏整理大全【持续更新】

Unity 相关网站整理大全 众所周知&#xff0c;工欲善其事必先利其器&#xff0c;有一个好的工具可以让我们事半功倍&#xff0c;有一个好用的网站更是如此&#xff01; 但是好用的网站真的太多了&#xff0c;收藏夹都满满的(但是几乎没打开用过&#x1f601;)。 所以本文是对…...

Alpine Ridge控制器使其具备多种使用模式 - 英特尔发布雷电3接口:竟和USB Type-C统一了

同时又因为这建立在Type-C的基础上&#xff0c;雷电3也将利用现有的标准Type-C线缆引入有源支持。当使用Type-C的线缆时&#xff0c;雷电的速度就降到了20Gbps全双工——这与普通的Type-C的带宽相同——这是为了成本牺牲了一些带宽。可以比较一下&#xff0c;Type-C线的成本只有…...

容器——2.Collection 子接口之 List

文章目录 2.1. Arraylist 和 Vector 的区别?2.2. Arraylist 与 LinkedList 区别?2.2.1. 补充内容:双向链表和双向循环链表2.2.2. 补充内容:RandomAccess 接口 2.3 ArrayList 的扩容机制 2.1. Arraylist 和 Vector 的区别? ArrayList 是 List 的主要实现类&#xff0c;底层使…...

【工作记录】docker安装gitlab、重置密码@20230809

前言 本文记录下基于docker安装gitlab并重置管理员密码的过程。 作为记录的同时也希望能帮助到需要的朋友们。 搭建过程 1. 准备好docker环境并启动docker [rootslave-node1 docker-gitlab]# docker version Client:Version: 18.06.1-ceAPI version: 1.38…...

数据挖掘的基本概念和大数据的特点

数据挖掘是指从大量数据中提取有价值的信息或模式的过程。它通常使用计算机技术来分析数据&#xff0c;并利用统计学、机器学习、人工智能等方法来发现数据中的隐藏规律、趋势和关联性。 数据挖掘的基本概念包括以下几个方面&#xff1a; 数据预处理&#xff1a;对原始数据进行…...

LabVIEW开发分段反射器测试台

LabVIEW开发分段反射器测试台 随着对太空的观察需求越来越远&#xff0c;而不是当前技术&#xff08;如哈勃望远镜&#xff09;所能达到的&#xff0c;有必要增加太空望远镜主镜的尺寸。但是&#xff0c;增加主镜像的大小时存在几个问题。随着反射镜尺寸的增加&#xff0c;制造…...

二级python和二级c哪个简单,二级c语言和二级python

大家好&#xff0c;小编为大家解答二级c语言和二级office一起报可以吗的问题。很多人还不知道计算机二级c语言和python哪个好考&#xff0c;现在让我们一起来看看吧&#xff01; 介绍Python有很多库和使用Qt编写的接口,这自然创建c调用Python的需求。一路摸索,充满艰辛的添加头…...

E: Package ‘curl‘ has no installation candidate/ E:软件包没有可用的安装源

解决方案&#xff1a; 访问etc/apt/source.list 修改或者添加安装源 不用版本的Linux 有不同的配置比如我的是Debian 12 其他版本的去搜索引擎搜索即可 vim /etc/apt/source.list 改成修改或添加 // 以下是官方示例 deb http://deb.debian.org/debian bookworm main non-…...

代理模式及常见的3种代理类型对比

代理模式及常见的3种代理类型对比 代理模式代理模式分类静态代理JDK动态代理CGLIB动态代理Fastclass机制 三种代理方式之间对比常见问题 代理模式 代理模式是一种设计模式&#xff0c;提供了对目标对象额外的访问方式&#xff0c;即通过代理对象访问目标对象&#xff0c;这样可…...

8.6 校招 内推 面经

绿泡泡&#xff1a; neituijunsir 交流裙&#xff0c;内推/实习/校招汇总表格 1、面经 | 车载测试-23 面经 | 车载测试-23 2、校招 | 荣耀2024届全球校园招聘启动&#xff08;内推&#xff09; 校招 | 荣耀2024届全球校园招聘启动&#xff08;内推&#xff09; 3、校招 |…...

【大数据之Flume】七、Flume进阶之自定义Sink

&#xff08;1&#xff09;概述&#xff1a;   Sink 不断地轮询 Channel 中的事件且批量地移除它们&#xff0c;并将这些事件批量写入到存储或索引系统、或者被发送到另一个 Flume Agent。 Sink 是完全事务性的。在从 Channel 批量删除数据之前&#xff0c;每个 Sink 用 Chan…...

vue对于时间的处理

2023-08-05 11:25:45 假如这个就是我们要传的时间字符串 比如今天是2023-08-05&#xff08;同一天&#xff09;&#xff1a;现在把这个时间字符串传入到 formatDate&#xff08;&#xff09;这个方法&#xff0c;就会给你返回 11:25 比如今天是2023-08-06&#xff08;前一天&a…...

Apache DolphinScheduler 3.1.8 版本发布,修复 SeaTunnel 相关 Bug

近日&#xff0c;Apache DolphinScheduler 发布了 3.1.8 版本。此版本主要基于 3.1.7 版本进行了 bug 修复&#xff0c;共计修复 16 个 bug, 1 个 doc, 2 个 chore。 其中修复了以下几个较为重要的问题&#xff1a; 修复在构建 SeaTunnel 任务节点的参数时错误的判断条件修复 …...

科技云报道:一波未平一波又起?AI大模型再出邪恶攻击工具

AI大模型的快速向前奔跑&#xff0c;让我们见识到了AI的无限可能&#xff0c;但也展示了AI在虚假信息、深度伪造和网络攻击方面的潜在威胁。 据安全分析平台Netenrich报道&#xff0c;近日&#xff0c;一款名为FraudGPT的AI工具近期在暗网上流通&#xff0c;并被犯罪分子用于编…...

深度对话|如何设计合适的网络经济激励措施

近日&#xff0c;我们与Mysten Labs的首席经济学家Alonso de Gortari进行了对话&#xff0c;讨论了如何在网络运营商和参与者之间找到激励措施的平衡&#xff0c;以及Sui的经济如何不断发展。 是什么让您选择将自己的经济学背景应用于区块链和Web3领域&#xff1f; 起初&…...

opencv带GStreamer之Windows编译

目录 1、下载GStreamer和安装2. GSTReamer CMake配置3. 验证是否配置成功 1、下载GStreamer和安装 下载地址如下&#xff1a; gstreamer-1.0-msvc-x86_64-1.18.2.msi gstreamer-1.0-devel-msvc-x86_64-1.18.2.msi 安装目录无要求&#xff0c;主要是安装完设置环境变量 xxx\1…...

Java并发编程之锁的升级

Java 中的锁机制是多线程编程中的一部分。锁一共有4种状态&#xff0c;级别从低到高依次是&#xff1a;无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态&#xff0c;这几个状态会随着竞争情况逐渐升级。 锁可以升级但不能降级&#xff0c;意味着偏向锁升级成轻量级锁后不能…...

多核异构处理器A核与M核通信过程

多核异构处理器是指集成了不同类型或架构的CPU的系统级芯片&#xff08;SoC&#xff09;。 例如&#xff0c;有些处理器同时包含了高性能的A核&#xff08;如Cortex-A&#xff09;和低功耗的M核&#xff08;如Cortex-M&#xff09;。 这样的设计可以让不同的CPU负责不同的任务…...

Phi-4-mini-reasoning人工智能伦理评估框架初探

Phi-4-mini-reasoning人工智能伦理评估框架初探 1. 引言&#xff1a;当AI开始监督AI 最近测试Phi-4-mini-reasoning模型时&#xff0c;发现一个有趣现象&#xff1a;这个擅长逻辑推理的小型模型&#xff0c;在分析其他AI生成内容时展现出惊人的"挑错"能力。它能准确…...

OpenClaw模型热切换:Qwen3-14b_int4_awq与ChatGLM3动态路由实验

OpenClaw模型热切换&#xff1a;Qwen3-14b_int4_awq与ChatGLM3动态路由实验 1. 为什么需要模型热切换 上周我在处理一个自动化任务时遇到了典型困境&#xff1a;让OpenClaw帮我生成Python爬虫代码时&#xff0c;ChatGLM3给出的方案总是过于保守&#xff1b;而让它写产品文案时…...

芒果文件编码转换工具 非常好用的代码转ANSI转UTF8格式小工具

群里的大佬 写的小工具 试了下很好用 下载链接...

工业水质快检试剂盒怎么选?这家国产品牌值得关注

在工业水处理与环境监测领域&#xff0c;快速、准确的水质检测是保障生产安全和环保合规的关键环节。传统实验室检测流程复杂、耗时长&#xff0c;难以满足现场快速筛查和应急决策需求。面对这一行业痛点&#xff0c;水质快检试剂盒凭借操作简便、响应迅速的特点&#xff0c;正…...

MedGemma医疗助手:5分钟本地部署,打造你的专属AI医生

MedGemma医疗助手&#xff1a;5分钟本地部署&#xff0c;打造你的专属AI医生 引言 深夜&#xff0c;当你感到身体不适&#xff0c;想初步了解症状时&#xff0c;身边有一位随时待命、知识渊博的“医生”可以咨询&#xff0c;而且这位“医生”的回答过程完全透明&#xff0c;每…...

通义千问1.8B-Chat-GPTQ-Int4企业应用:电力巡检报告自动生成与缺陷分类辅助

通义千问1.8B-Chat-GPTQ-Int4企业应用&#xff1a;电力巡检报告自动生成与缺陷分类辅助 1. 引言&#xff1a;当AI遇见电力巡检 想象一下这个场景&#xff1a;电力巡检员小王&#xff0c;刚刚结束了一天的野外巡检工作。他拖着疲惫的身体回到办公室&#xff0c;面对的不是一杯…...

第7章:支持向量机(SVM)

第7章:支持向量机(SVM) 树模型的决策边界是"轴对齐的阶梯",而 SVM 在说:“我要找那条与两类数据距离最大的分界线——不是随便一条能分开的线,而是最宽的那条街道的中心线。” 这个追求"最大间隔"的执念,催生了 20 世纪最优雅的分类算法之一。 0. 本…...

跨技能协作:OpenClaw调度多个Qwen3-32B-Chat镜像实例完成复杂项目

跨技能协作&#xff1a;OpenClaw调度多个Qwen3-32B-Chat镜像实例完成复杂项目 1. 论文写作自动化的技术挑战 去年写硕士论文时&#xff0c;我曾连续三周每天花6小时在文献检索、内容组织和格式调整上。这种重复性工作让我开始思考&#xff1a;能否用AI实现论文写作的自动化流…...

智能建造知识拓展 | 施工阶段AI赋能的十大关键场景

导 读在上期文章《智能建造知识拓展 | 三维激光扫描&#xff1a;为数字孪生构筑精准“空间底座”》中&#xff0c;我们为您介绍了三维激光扫描技术如何以毫米级精度采集现场数据&#xff0c;为数字孪生构建提供可靠的“数字底图”。本期&#xff0c;我们将聚焦人工智能——这位…...

Loom上线前必须做的6项静态检查+4类动态熔断配置(GitHub星标开源Checklist)

第一章&#xff1a;Loom响应式编程转型的必要性与风险全景图随着微服务架构深度演进与实时数据流场景爆发式增长&#xff0c;传统阻塞式I/O与线程模型在高并发、低延迟诉求下日益暴露瓶颈。Project Loom引入虚拟线程&#xff08;Virtual Threads&#xff09;与结构化并发原语&a…...