首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在UIAlertController中添加倒计时定时器

在UIAlertController中添加倒计时定时器可以通过以下步骤实现:

  1. 创建一个UIAlertController对象,并设置标题、消息和样式。
  2. 创建一个UILabel对象,并设置其初始文本为倒计时的初始值。
  3. 将UILabel对象添加到UIAlertController的view中。
  4. 创建一个定时器对象,使用scheduledTimer方法设置定时器的时间间隔和触发方法。
  5. 在定时器触发方法中,更新UILabel的文本为当前倒计时的值,并判断是否达到结束条件。
  6. 如果倒计时结束,调用UIAlertController的dismiss方法关闭弹窗。

以下是一个示例代码:

代码语言:txt
复制
// 创建UIAlertController对象
let alertController = UIAlertController(title: "倒计时", message: "剩余时间:", preferredStyle: .alert)

// 创建UILabel对象
let countdownLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 30))
countdownLabel.textAlignment = .center
countdownLabel.font = UIFont.systemFont(ofSize: 20)
countdownLabel.text = "10" // 初始倒计时值
alertController.view.addSubview(countdownLabel)

// 创建定时器
var countdown = 10
let timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { timer in
    countdown -= 1
    countdownLabel.text = "\(countdown)"
    
    if countdown == 0 {
        timer.invalidate()
        alertController.dismiss(animated: true, completion: nil)
    }
}

// 将定时器添加到当前RunLoop中
RunLoop.current.add(timer, forMode: .common)

// 显示UIAlertController
present(alertController, animated: true, completion: nil)

这段代码会创建一个带有倒计时功能的UIAlertController弹窗,每秒更新一次倒计时的文本,当倒计时结束时自动关闭弹窗。你可以根据需要调整倒计时的初始值和样式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 小程序倒计时深究

    因为请求数据写在onShow 函数里面,所以每次切换界面都会刷新,这就会导致,如果当前 定时器在跑的话,再次刷新会再次常见定时, 那么就会导致刷新几次有几个定时器,同时在跑,那么前端界面显示的计时数字 就会不时跳动,所以需要保证在跑的定时器只有一个。将定时器对象创建为全局的,在每次开启定时器的时候先清空之前的定时器。就可以解决刷新后计时闪动的问题了,或者在在tab页面,运用 onHide 周期 进行 clearTimeInterval清空 , 在 非tab页面,运用onUload() 周期 进行 clearTimeInterval清空,百度都可以找到类似解决方案,其中在我的历史文章小程序实战踩坑之B2B商城项目总结也有总结,代码类似如下:

    02

    八路抢答器系统51单片机设计【附Proteus仿真、C程序、原理图及PCB文件、元器件清单和论文等】「建议收藏」

    设计要求 1)抢答器同时供8名选手或2个代表队比赛,分别用8个按钮S0-S7表示; 2)设置一个系统清除和抢答控制开关S,该开关由主持人控制; 3)抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止; 4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30s等)。当主持人启动“开始”按键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续时间为0.5s左右; 5)参赛选手在设定时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手编号和抢答时间,并保持到主持人将系统清除为止; 6)如果定时时间到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00; 7)设计出软件编程方法,并写出源代码; 8)主机与从机实现无线抢答; 9)用Proteus进行仿真,Altium Designer绘制原理图和PCB;

    02

    Android开发笔记(五十)定时器AlarmManager

    Java中的定时器机制有现成的方案,就是Timer+TimerTask。其中TimerTask用来描述时刻到达后的事务处理,而Timer用来调度定时任务,如何时启动、间隔多久再次运行等等。 Timer的调度方法是schedule,主要有三个参数。第一个参数表示用来调度的定时任务,第二个参数表示延迟多久首次启动任务,第三个参数表示间隔多久再次启动任务。 public void schedule(TimerTask task, long delay, long period) 定时任务得自己写个继承自TimerTask的新类,并重写run方法填入具体的事务处理代码。调用Timer的schedule方法,定时任务便会按照调度设置按时启动;TimerTask不能直接设置运行的次数上限,一旦启动就会持续定时运行,除非对象销毁或者调用了TimerTask的cancel方法。调用cancel方法停止定时任务后,若想重启该定时任务,只能重新声明TimerTask对象,并且重新调用schedule方法。 Timer+TimerTask的实质是利用开启Thread来触发定时任务,所以TimerTask实际上运行于非UI线程,也就无法直接操作UI。若想在TimerTask中修改UI控件,得通过Handler发送消息来间接实现。

    01
    领券