用UILocalNotification实现一个闹钟(Swift)

之前项目需求要实现一个闹钟,github上找了半天发现都是很旧的代码了,所以就准备自己写一个,刚好最近在学习Swift,就用Swift写了一个demo放在这里:https://github.com/Phelthas/Demo_AlarmClock   效果如图:

        

总结一下,备忘

界面的话一个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年每个月至少写一篇博客的,结果第一篇就拖到月底了。。。以后争取早一点!

时间: 2024-10-13 16:16:57

用UILocalNotification实现一个闹钟(Swift)的相关文章

iOS开发点滴 - 如何通过Segue写代码传递数据从一个ViewController到另一个ViewController(Swift代码)

1. 拖线 按住Control键,用鼠标从源控制器的某个控件开始,拖动到目的控制器 2. 选择弹出类型并设置Segue Identifier 在弹出的对话框中,选择“Selection Segue->Show” 见下图 设置Segue Identifier 3. 在目的视图控制器中设置接收桩 class DetailViewController: UIViewController { ... var destStub: SomeClass! ... } 4. 在源视图控制器中编写数据代码 ove

Swift基础:创建第一个Swift工程:Swift的基本语法

苹果公司在今年的WWDC大会上,除了发布了iOS8和Max OS X 10.10之外,还发布了一个新的编程语言Swift.不得不说,Swift有较大的转变,也使编程变得更加容易了,下面介绍了Swift的常量和变量的定义,基本控制语句的使用: 需要注意的是:Swift只能在Xcode 6 Beta版中运行,Xcode 6 目前最新的是Beta 7,大家可以通过以下链接下载: http://adcdownload.apple.com//Developer_Tools/xcode_6_beta_7_a

[iOS] 用 Swift 开发一个 TODO 应用

原文地址:http://blog.callmewhy.com/2014/09/15/todo-list-in-swift/ 背景 相信不少 iOS 程序员对于 Swift 依旧持以观望的态度,一来是这小家伙刚出来没几天,本身还处于完善的阶段:二来是学习的成本较高,看完官方文档怎么也要个几天的时间:三来是反正最近几年很难在工程项目里推广使用,工作又用不到,那我学个锤子呐. 是的,我一开始也是这么想的.直到有一天,我遇到了它:Swift Tutorial - To Do List App.这是 Yo

Swift - 做一个简单的无线U盘(手机端Http服务器搭建)

由于iOS系统的封闭性,在数据传输方面十分不方便.不像安卓设备,直接连接电脑就能当U盘使用.所以一般我们如果用iPhone临时存取个东西,要么使用数据线连接iTunes,要么手机电脑都登上QQ,使用QQ来传输. 但这两种方式都略显不便,所以市面上出现了无线U盘这类的APP.原理很简单,就是软件打开后会启动HTTP服务器,这时电脑端使用浏览器输入 手机的ip,就可以通过web页面的形式访问到这个软件的用户文档.同时在这个web页面里,直接可以进行文件的上传,下载,删除等操作. 下面演示如何开发一个

[Swift]Day18&19:一个简单的例子

Swift90Days - 一个简单的小应用 第0步:明确任务 经过前面基础语法的学习,我们终于可以真枪实弹的来一发了.以这篇小鸡鸡小猫猫小狗狗为例,我们将会创建一个简单的应用: 通过 UITableView 展示三种小动物 通过 NSUserDefaults 进行数据持久化 通过 UIWebView 从维基百科加载更多数据 由于时间有限,这篇博客并不是教程或者翻译,只是一个关键思路的整理和记录,完整的源代码在文末有链接,如果有任何疑问欢迎与我联系,谢谢. 第1步:创建项目 创建一个新的项目,模

Swift学习笔记(一)——我的第一个Swift程序 Hello World

目前开发iOS必学的两门语言就是OC和Swift了,这两门语言目前呈现的趋势是此消彼长.但是为了很好的开发,学好两门语言是十分有必要的.现在我将开始Swift的学习.这是我的第一个Swift程序--Hello World.苹果在Xcode6中引入了一个开发Swift非常好的工具,叫做Playground.使用Playground可以很好的实时显示当前代码的输出,可以说是非常好玩. (1)打开Xcode,选择第一个选项"Get started with a playground". .

自己写的一个 java swing 的闹钟

上一周新入职,把代码down下来之后,领导和我讲了一些大概的业务以及代码流程(领导是技术出身),领导让我自己先看看代码,然后我看了两天,觉得已经完全可以接任务了,但是领导却迟迟没有分配任务给我,虽然他们几个同事比较忙,但是我好像也帮不上什么忙.然后,在那一天的那个晚上,回到住处之后,突然想到一个之前想到的问题,平时我起床都是靠的手机闹钟的,可是万一某一天手机挂了,那我起床不是有问题了吗,但有一个好处就是我有笔记本,那么我可以在笔记本上面装一个闹钟呀,然后我就萌生了自己写一个闹钟的想法,虽然这两天

用 Swift 开发一个 TODO 应用

背景 相信不少 iOS 程序员对于 Swift 依旧持以观望的态度,一来是这小家伙刚出来没几天,本身还处于完善的阶段:二来是学习的成本较高,看完官方文档怎么也要个几天的时间:三来是反正最近几年很难在工程项目里推广使用,工作又用不到,那我学个锤子呐. 是的,我一开始也是这么想的.直到有一天,我遇到了它:Swift Tutorial - To Do List App.这是 YouTube 上的一个很好地视屏教程,手把手教你如何完成一个 TODO 的应用,功能很简单,就是添加任务和浏览任务.将视屏内容

十大开源Swift库开始你的下一个iOS项目

随着Swift变得更加成熟,开源Swift库变得越来越多样化并且数量迅速增长.在本文中,我策划了可用于引导您的下一个iOS项目的最佳开源Swift库.它们将使您的代码库更加强大,性能更高,并允许您 更快地发布iOS项目. 事实上,在我的应用中,我集成了几乎所有这些开源库,如SnapKit,MapKit,ChartKit等.基于我的移动开发经验,今天我将介绍最知名和最常用的iOS库,在MIT许可下免费,在Github上. 1. Alamofire 对于服务器通信,除了使用iOS的内置类  URLS