Android 有原生的 SnackBar ,iOS 没有与之类似的原生控件,GitHub 上好像也没有找到特别好用的开源库,因而本身写了一个模仿系统原生通知样式的易于定制的 NoticeBoard 。 html
NoticeBoard 的功能定位是应用内消息控件,相对于系统通知,它显而易见的优势是:简单易用、可定制性强,相对于原生的 UIAlertController 和开源的 MBProgressHUD ,它的优势是专为这种特定场景而生:只须要告诉用户发生了什么,没必要当即处理,或者能够稍后再处理。git
强烈建议感兴趣的朋友亲自下载 源码 运行 Example
项目,由于项目中提供了大量的演示程序,经过这些演示你能够清楚地了解到使用方法及其效果。github
若是要在工程项目中使用NoticeBoard,须要在 Podfile
中添加这一行:swift
pod 'NoticeBoard'
最简单的,你能够直接发送一条 "Hello World!" :ruby
NoticeBoard.post("Hello World!")
用户能够像移除系统原生通知那样拖拽一条通知往上方移动丢出屏幕外,若是你但愿消息自动消失,须要传入消息的持续时间:app
NoticeBoard.post("Hello World!", duration: 2)
或者直接发出一条警告消息:工具
NoticeBoard.post(.warning, title: "电量太低", message: "电量不足10%,请及时给设备充电。", duration: 10)
// 建立notice let notice = Notice.init(title: "标题", icon: UIImage.init(named: "alert-"), body: "正文") // 设置notice ... // 发布notice NoticeBoard.shared.post(notice, duration: 2)
设置noticepost
// 按钮事件 notice.actionButtonDidTapped { (notice, btn) in print("点击了'→'按钮") } // 设置颜色主题 notice.themeColor = .init(red: 0.2, green: 0.3, blue: 0.4, alpha: 1) // 模糊背景(暂时只支持iOS11,在以前的系统会自动改成纯色背景),和纯色背景能够同时使用 notice.blurEffectStyle = .light
还有更多设置,例如:警示(alert)、禁止被用户经过手势移除、设置正文最大高度等,详见 文档 。动画
移除通知spa
// 移除某个通知 NoticeBoard.shared.remove(notice) // 清空 NoticeBoard.shared.clean()
NoticeBoard 开源库提供了极大的自由度,你能够只享受 NoticeBoard 提供的对 Notice 管理策略(post、remove、手势、过渡动画),而不使用现有的 Notice 的默认 UI,作法就是建立一个空白的 Notice 实例,添加自定义的视图。
let notice = Notice() notice.rootViewController?.view.addSubview(myView) NoticeBoard.post(notice)
根据这一特性,你能够继承 Notice ,重写初始化方法, 从而建立符合公司内部 UI 要求的 Notice 。
这一篇是简化版,还有更多功能,详见 博客原文 。
若是你已经下载了 项目源码 而且开始使用了,请搭配阅读 开发文档 。
若是你以为个人工具备用,烦请前往 GitHub 点个赞以支持。目前的 Star 个数是: