老谭笔记

10.7、10.6的通知中心THUserNotification

之前写过一篇文章,详细介绍了10.8中引入的通知中心NSUserNotification,并介绍了其具体的用法等等。

有了通知中心,我们就再也不必花很多的时间去做各式各样的弹窗等等,极大的方便了我们的编码。

THUserNotification

最近公司的一款产品就正好有这样的需求,需要统一之前程序中出现的所有弹窗为NSUserNotification,但随之问题就来了,10.6、10.7的系统怎么办?

在仔细研究了NSUserNotification和NSUserNotificationCenter之后,发现其接口并不是十分复杂,于是就萌发了做一套全新的通知系统,实现NSUserNotification所有的方法,并保证接口完全相同,这样一套代码就可以实现不同系统版本之间产生类似的弹效果。

经过两天时间不停的修改,终于达到相似度90%以上,基本上能以假乱真,为纪念这两个晚上的莫名的执着,特此放出成果,解放有同样需求的同行们,下面简单介绍一下用法。

将THUserNotification相关的文件拖入工程(包含banner2lines.tiff文件),添加QuartzCore.framework,引入头,就可以直接使用了,将需要使用NSUserNotification的地方,直接修改为THUserNotification,只需要注意以下三点:

1.初使化NSUserNotification使用+ (id)notification;此方法会根据系统自动返回NSUserNotification或THUserNotification实例。2.在使用NSUserNotificationCenter时,使用+ (id)notificationCenter;代替原有的defaultUserNotificationCenter,同样也会根据自动返回NSUserNotification或THUserNotification的共享对象。

3.额外增加了THUserNotificationCenter一个属性,可设置通知的三种不同样式(不显示、横幅、提示三种模式);

其它的使用方法,跟NSUserNotification原有接口完全相同,包括Delegate。至于NSUserNotification的详细用法,请参照我之前写过的一篇文章,http://www.tanhao.me/pieces/517.html

THUserNotification的代码托管在Github,地址:THUserNotification