用UILocalNotification实现一个闹钟(Swift)

摘要:
)即,0x1111111表示全部被选中,0x00000000表示全部未被选中,每1表示一天被选中。然后,可以使用换档操作员计算所选按钮,以指示按钮是否被选择。如果选择了闹钟,则仍使用UILocalNotification。
之前项目需求要实现一个闹钟,github上找了半天发现都是很旧的代码了,所以就准备自己写一个,刚好最近在学习Swift,就用Swift写了一个demo放在这里:https://github.com/Phelthas/Demo_AlarmClock   效果如图:
用UILocalNotification实现一个闹钟(Swift)第1张        用UILocalNotification实现一个闹钟(Swift)第2张
 
总结一下,备忘
 
界面的话一个DatePicker加7个UIButton就搞定了,稍微有点问题的是如何表示哪几天选中了,哪几天没选中。
这里可以用数组实现,也可以用集合,但最简单的是用一个16进制数来表示(也是github上看来的,原来自己用数组写了一大坨。。。)即用0x111 1111 来表示全部选中,用0x000 0000 来表示全部没选中,每一个1表示选中一天。
然后就可以移位运算符来运算button的selected,来表示这个button有没有被选中
 
闹钟的话还是用UILocalNotification来实现。需要注意的是,UILocalNotification的重复间隔只能是苹果定义的一些值( NSCalendarUnit),且间隔不能太小(秒不管用),且每个app能设置的UILocalNotification个数有上限(貌似是128个)
所以这里一个通知只能让闹钟每周X的同一个时间响,如果要一个闹钟周一周二都响,就要定义2个UILocalNotification,如果7天都要响,就要7个通知。。。目前还真不知道有什么其他的办法,如果有知道的同学,望不吝赐教
 
确定周几响的时候,需要根据NSCalendar来计算,用dateComponents的方式,这里需要注意的是苹果定义的周日的weekday是1(即认为周日是一周第一天),而我们一般习惯把周一作为每周的第一天,所以计算的时候需要转换一下,转换方法见demo
 
添加通知的时候,要给通知设置userInfo,将通知的identifier设置进去,作为通知的唯一标示符,否则无法取消;
这里我是将通知的时间的时间戳作为一个字符串来作为这个通知的identifier

免责声明:文章转载自《用UILocalNotification实现一个闹钟(Swift)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jQuery+Ajax用户登录功能的实现用C#实现Web代理服务器3下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

转:Android进阶:模拟闹钟 学习Alarm与Notification

无意间看到Alarm这个类 觉得挺有意思 这个用法应该会比较常用到 看了一些介绍 然后自己写了一个demo Alarm是在预定的时间上触发Intent的一种独立的方法。Alarm超出了应用程序的作用域,所以它们可以用于触发应用程序事件或动作,甚至在应用程序关闭之后,与Broadcast Receiver结合,它们可以变得尤其的强大,可以通过设置Alarm来...

android 定时器的使用

1、android中通常是使用AlarmManager来定时启动一个单次或重复多次操作的。具体的说就是我们通过AlarmManager设定一个时间和注册一个intent到系统中,然后在该时间到来时,系统为我们发送一个广播,即执行我们设定的Intent(要执行的操作),通常我们使用 PendingIntent来实现“要执行的操作”,PendingIntent...

Android中使用AlarmManager设置闹钟

场景 设置闹钟 闹钟提醒 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 新建一个MainActivity,在其布局文件中添加一个时间选择器和一个Button <?xml version="1.0" encoding="...

VUE JS 闹钟函数

心跳函数:秒表 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。 setInterval() 方法会不停地调用函数,直到clearInterval()被调用或窗口被关闭。 由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。 clearInterval() 方法可取消由 s...

在Android上常用的定时器 AlarmManager

AlarmManager的作用文档中的解释是:在特定的时刻为我们广播一个指定的Intent。简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent,常用方法有五个: (1)set(int type,long startTime,PendingIntent pi); 该方法用于设置一次性闹钟,第一个参数...

STM32CUBEMX配置RTC闹钟

查看参考手册RTC章节闹钟的操作顺序 复制上一章工程,打开CubeMX进行配置,使能闹钟A 使能EXTI线17配置为中断模式 配置RTC的参数,异步分频值为127,同步分频值为255,24小时制 初始日期为2020年6月17日周三 初始时间为BCD格式,14点15分0秒 设置闹钟A的参数为每周三14点25分0秒,当时间到达指定日期的时间时发生中...