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 個數是: