NoticeBoard 一個仿原生UI的消息通知控件

Android 有原生的 SnackBar ,iOS 沒有與之類似的原生控件,GitHub 上好像也沒有找到特別好用的開源庫,因而本身寫了一個模仿系統原生通知樣式的易於定製的 NoticeBoardhtml

NoticeBoard 的功能定位是應用內消息控件,相對於系統通知,它顯而易見的優勢是:簡單易用可定製性強,相對於原生的 UIAlertController 和開源的 MBProgressHUD ,它的優勢是專爲這種特定場景而生:只須要告訴用戶發生了什麼,沒必要當即處理,或者能夠稍後再處理git

演示如何使用

強烈建議感興趣的朋友親自下載 源碼 運行 Example項目,由於項目中提供了大量的演示程序,經過這些演示你能夠清楚地瞭解到使用方法及其效果。github

導入 NoticeBoard

若是要在工程項目中使用NoticeBoard,須要在 Podfile 中添加這一行:swift

pod 'NoticeBoard'

快速 post 示例

最簡單的,你能夠直接發送一條 "Hello World!" :ruby

NoticeBoard.post("Hello World!")

用戶能夠像移除系統原生通知那樣拖拽一條通知往上方移動丟出屏幕外,若是你但願消息自動消失,須要傳入消息的持續時間:app

NoticeBoard.post("Hello World!", duration: 2)

或者直接發出一條警告消息:工具

NoticeBoard.post(.warning, title: "電量太低", message: "電量不足10%,請及時給設備充電。", duration: 10)

標準 post 步驟

// 建立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()

自定義 view

NoticeBoard 開源庫提供了極大的自由度,你能夠只享受 NoticeBoard 提供的對 Notice 管理策略(post、remove、手勢、過渡動畫),而不使用現有的 Notice 的默認 UI,作法就是建立一個空白的 Notice 實例,添加自定義的視圖。

let notice = Notice()
notice.rootViewController?.view.addSubview(myView)
NoticeBoard.post(notice)
根據這一特性,你能夠繼承 Notice ,重寫初始化方法, 從而建立符合公司內部 UI 要求的 Notice 。

源碼和文檔連接

這一篇是簡化版,還有更多功能,詳見 博客原文

若是你已經下載了 項目源碼 而且開始使用了,請搭配閱讀 開發文檔

若是你以爲個人工具備用,煩請前往 GitHub 點個贊以支持。目前的 Star 個數是:

相關文章
相關標籤/搜索