自定义IOS系统弹框

写在之前

系统的弹框虽然很好看,但是有时候无法完全满足UI设计的需求,比如说中间要显示一个输入框,或者要放置一张图片,这里介绍一个很早之前的自定义弹框库,这个自定义弹框sdk写的很细致,定制性很强,几乎可以做到完全改写,附下载链接

与系统弹框不同的是这个库支持以下功能:
1. 仿原生弹框样式
2. 可自定义下方按钮颜色字体个数,可自定义title文字、message文字样式
3. 可自定义弹框大小高度,中间支持大图滑动
4. 支持按钮上方横线隐藏显示
5. 可传入自定义contentView进去
6. 可以定义自己控制alert消失时间
7. 可以同时管理多个弹框,最后面调用的

先展示一下支持的弹框样式:
弹框gif
message自定义

这里写图片描述

这里写图片描述

代码解析:

整个一个alert由三大块组成,顶部一个滚动视图放title,中间一个滚动视图contentScrollView放contentView,下面一个滚动视图bottomScrollView放按钮

视图结构如下:
这里写图片描述

CXAlertButtonContainerView继承UIScrollView 组成部分:

CXAlertButtonItem继承自UIButton成员结构如下:

类名属性类型属性名称
NSStringtitle
CXAlertButtonItemCXAlertViewButtonTypetype
CXAlertButtonHandleraction
BOOLdefaultRightLineVisible

CXAlertViewController 用来进行弹框的controller

下面介绍一下整个sdk从创建到show的代码逻辑:

1、创建逻辑:

  1. 走initialize方法初始化一些固定常规信息,这边不调用各属性的set方法-主要是不怎么改变的信息
  2. 首先判断传入的是message就创建一个Label传入作为contentView
  3. 走initWithTitle:contentView:cancelButtonTitle:方法初始化一些自定义信息
  4. 创建三个滚动视图
  5. 有add按钮就去添加按钮
  6. 调用show方法
  7. 调用各种属性set信息,这个之后各种变量才会有值,之前都是没有值的
  8. 调用layoutSubviews

2、show逻辑:

假如一次性弹多个弹框ABC,他会先显示A然后隐藏A,显示B隐藏B,显示C,dismissC再去显示B,Bdismiss之后显示A,其实这边可以考虑参考系统的每次只让显示一个Alert,后面弹出的无效

  • 变量介绍:

    1. _containerView用来放整个视图的
    2. __cx_pending_alert_queue:NSMutableArray 存放本alert是否被添加
    3. __cx_alert_animating:BOOL 是否动画中
    4. __cx_alert_current_view: CXAlertView 记录当前被弹出的alert
    5. __cx_alert_background_window: 做半透明背景色渐变的window
    6. isVisible: 当前弹框是否可见
    7. layoutDirty: 防止validateLayout被多次调用
    8. willShowHandler 各种时机的block回调
  • 函数调用中逻辑

    1. __cx_alert_background_window背景色0.4纯黑色,0.3秒alpha在内从0->1
    2. 创建新window 根视图为CXAlertViewController,细化为下面测操作
    3. 直接切换当前为新window

CXAlertViewController内部进行如下操作:
1. self.view = self.alertView
1. self.alertView 调用setup
1. setup内部操作:
(1、初始化弹框的背景视图_containerView
2、检测初始化内部三块滚动视图初始化情况,未初始化就初始化
3、设置各块视图的位置大小,
4、动画展示alert)

3、dismiss逻辑:

  1. __cx_pending_alert_queue 移除self
  2. _containerView 0.25秒内alpha从 1->0
  3. __cx_alert_background_window 0.3秒内alpha从 1->0
  4. 执行dismissComplete,由于可以显示多个弹框,检测有没有之前的弹框重新show出来

tips

由于这个新的alert类应用于项目中还没有很长时间,所以应该会有缺陷,以后会渐渐改进
现在的alert支持多弹框,在考虑要不要改成系统类似只能弹出一个框
现在的点击事件是在按钮被点击的时候直接回调block,考虑改成消失之后再去调用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/256277.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

华为vivo小米魅族oppo荣耀安卓手机刷IOS苹果系统

现在的刷机教程层出不穷,但是没有哪个大神可以开发出一款安卓刷IOS的工具,使得安卓手机或者安卓平板变成IOS苹果系统,这个工具除了可以刷安卓手机也可以刷安卓平板,网友实测,如果设备不支持的话软件会提醒不支持&#…

android高仿ios11系统,安卓仿ios11桌面全套文件

安卓手机想要苹果11的桌面的话,安卓仿ios11桌面全套文件app就可以帮您实现哦。安卓仿ios11桌面全套文件app是一款超级优质的手机桌面工具软件,平台上面拥有海量的壁纸资源,大家可以任意选取哦。 应用说明 修改负一屏效果 修改dock栏模糊度 修…

软件配置 | ios系统Clion下载、安装、配置环境

软件配置 软件配置 | ios系统Clion下载、安装、配置环境 软件配置下载、安装gClion 调试参考链接下载、安装调试 本文总结ios系统下Clion下载、安装、配置环境过程和可能碰到的问题。 因为是在私人电脑(ios)上配置的Clion,我还不太熟悉自己的…

iOS 13.0 至 13.7 平刷系统教程

来自 : 某QQ群分享文件,整理后发布 如侵权告知删除 关于 Succession 平刷插件信息: 插件:Succession 版本:1.4.15 开发者:Samg_is_a_Ninja 系统支持:iOS 10 至 13.7 用途:平刷当前系统 补充&am…

ios添加邮件收件服务器,iOS 系统邮件的基础使用

尽管有好多人的主力邮件是 Gmail,客户端的首选也是 Gmail,但是在国内的互联网环境中不可避免的要使用到本土的一些邮件服务。对于这些轻量级的服务我选择用系统自带的邮件应用进行统一的管理。本文主要讲解在系统自带邮件中,如何使用国内常用的邮件服务:如网易邮箱、QQ 邮箱…

关闭app服务器系统,ios12系统服务哪些关掉

类型:ios系统工具大小:38.7M语言:中文 评分:10.0 标签: 立即下载 ios12更新后,很多服务功能都开启了,是比较费电的,用户可以前往设置进行关闭来省电等,那ios12系统服务哪…

ios android 系统占用空间,iOS 系统占用了 20G 储存空间?别担心,教你快速解决!...

如果你曾经查看过自己 iOS 设备的储存空间使用情况,那么你可能见到过下面这种情形: 你可能发现了,系统所占据的空间太大了,远超过了正常的范围,这是怎么回事呢?下面就为大家解释一下出现这类情形的几种解决…

如何关闭iOS系统自动更新?最新屏蔽升级描述文件下载

新老司机朋友们晚上好,隔壁老王又来和大家见面了,鸽了有一段时间了,非常抱歉~ 众所周知,iOS 系统一直保持着较高的更新频率,但并不是所有用户都喜欢将自己的设备升级到最新版本,尤其是一些旧型号的 iPhone…

如何下载和安装 iOS开发教程

步骤 1: 在App Uploader网站,点击“Windows版本”下载 。 步骤 2: 在弹出框中,点击“下载”。 步骤 3:在弹出框中,点击“文件夹”打开。 步骤:4:右键选择“解压全部文件”。 步骤5:在弹出框中&#xff0c…

ios系统安装包下载_iOS在后台自动升级?一招教你屏蔽iOS更新

苹果产品一直被用户喜爱的最大的特点就是因为iOS系统,iOS系统有着流畅的体验以及完善的生态环境,因此历年新款iPhone都处于畅销状态。但是随着苹果旗下产品发布的越来越多,比如到目前为止苹果已经发布了15款iPhone产品,从最早的第…

ios系统安装包下载_iOS 屏蔽系统升级,描述文件版本已复活,无需越狱,请速度下载!...

沉寂已久的老方法,利用描述文件屏蔽 iOS 系统更新,目前已经正式恢复,再也不担心会自动下载更新包啦。 以往都是安装 tvOS 系列的描述文件,绕过苹果验证更新,从而达到阻止系统升级的目的,但是自 iOS 13 开始,安装 tvOS 12 会提示已过期或者失效。 而在当时,安装 tvOS 13…

如何下载和安装iOS 15公测版【附更新建议】

苹果在WWDC2021开发者大会上正式发布了iOS 15和iPadOS 15系统,推出了许多新功能,例如FaceTime共享、专注模式、实时文本、离线Siri、全新设计的通知等等。iOS 15和iPadOS 15的第一个公开测试版已于6月30日发布。 相信不少果粉已经迫不及待想要升级体验。…

氟化物超标怎么处理

项目基本信息 工艺及产品信息 甲方 / 采用工艺 过滤系统螯合树脂除氟系统 工程公司 / 工艺原理 废水除氟,耐受氯离子、硫酸根等阴离子的干扰 开始时间 2020/11/12 工艺特点 再生周期长 结束时间 2020/11/30 型号 CH-87 项目周期及项目地 15天 江…

lecory 波形二进制文件头(.trc)定义

1.文件头,从0字节开始 byte[] lecroy_trc_header new byte[]{0x23,0x39,0x30,0x30,0x32,0x30,0x30,0x30,0x31,0x34,0x34,0x57,0x41,0x56,0x45,0x44,0x45,0x53,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x45,0x43,0x52,0x4F,0x59,0x5F,0x32,0x5F,0x33,0x…

playwright - 剧作家, 端对端测试

本文基于 playwright v1.34.3, node v18.16.0 注意:playwright 版本随 node lts 版本更新而更新,所以请确保 node 版本与 playwright 版本匹配。 写在前面 前端开发阶段,少不了测试,一般包含两类测试:单元测试、端对端…

如何搭建苹果虚拟服务器降级,ios14怎么降级13.6 苹果iOS14降级超详细教程

iOS14相信很多朋友都体验过了,最近不少的小伙伴都升级到iOS14,但是对这个版本并不满意,那么iOS14怎么降级13.6呢?下面就来为大家分享一下苹果iOS14降级13.6的教程。 1、通过 iTunes 降级系统(注意事项:降级只能降级到最新的iOS 1…

苹果手机无法验证应用怎么办_苹果关闭iOS 14.0.1验证,用户将无法降级_

2020年10月28日 10:01 作者:陈沐梁 编辑:陈沐梁 文章出处:泡泡网原创 10月28日消息 在上周发布 iOS 14.1正式版之后,苹果今天停止了对 iOS 14.0.1的验证,这意味着用户无法再降级到该版本。 苹果通常会在新版本发布后停…

苹果开放降级通道_苹果出手,关闭降级系统iOS13验证,iOS14再也回不去了!

自苹果发布最新版iOS 14系统后,有人已经抢先尝鲜升级了,有人还在观望中,这一次iOS 14系统升级,主要带来的变化有新增了一系列小功能,比如主屏小组件、APP资源库、给照片命名等,而据外媒报道,iOS…

苹果6严重卡顿_苹果手机iOS系统: 如果开放系统降级通道会怎么样?

苹果手机的iOS系统有一个最大的特点就是只能升级不能降级,每次系统升级之后,大约只有两周的时间让用户反悔,通过刷机的方式降级,超过了这个时间就永远不能降级了。 但是苹果每次推出新版本系统又总是出岔子,尤其是这次…

苹果手机几月份最便宜_苹果手机越来越便宜了么?目前看来确实是这样的!

原标题:苹果手机越来越便宜了么?目前看来确实是这样的! 苹果手机越来越便宜了么?目前看来确实是这样的,iPhone11系列已经从当初的5000元跌到了现如今的4000出头,在某多多甚至只需要3979元即可入手&#xff…