博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用UILocalNotification实现一个闹钟(Swift)
阅读量:5115 次
发布时间:2019-06-13

本文共 901 字,大约阅读时间需要 3 分钟。

之前项目需求要实现一个闹钟,github上找了半天发现都是很旧的代码了,所以就准备自己写一个,刚好最近在学习Swift,就用Swift写了一个demo放在这里:    效果如图:
        
 
总结一下,备忘
 
界面的话一个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 

 

 

计划2016年每个月至少写一篇博客的,结果第一篇就拖到月底了。。。以后争取早一点!

 

转载于:https://www.cnblogs.com/Phelthas/p/5169156.html

你可能感兴趣的文章
【转】CentOS 使用yum命令安装出现错误提示”could not retrieve mirrorlist http://mirrorlist.centos.org ***”...
查看>>
Android 浏览器启动应用程序
查看>>
md5sum
查看>>
第二章
查看>>
react+wabpack 搭建
查看>>
JDBC(14)—对DAO进行改进修改
查看>>
手机抓包的两种方法:wireshark抓包和fiddler抓包
查看>>
7.1.21 jQuery 的 Post请求
查看>>
Go---语言变量
查看>>
Liunx系统命令sed的使用
查看>>
springboot+dubbo
查看>>
[基于子串搜索的方法] BNDM算法
查看>>
SSH去除密码
查看>>
Ubuntu 16.04设置Redis为开机自动启动服务
查看>>
python删除x天前文件及文件夹
查看>>
NumPy 算术函数
查看>>
《Windows Mobile平台应用与开发》写作工作顺利进行中
查看>>
过滤机的故障排除
查看>>
javascript小技巧
查看>>
C#登录窗口(访问数据库)的制作,类文件的制作及使用
查看>>