1. 程式人生 > >33 個 2017 年必須瞭解的 iOS 開源庫

33 個 2017 年必須瞭解的 iOS 開源庫

25.png

照片版權:(Unsplash/Markus Pe)

你好,iOS 開發者們!我的名字叫 Pawe?,我是一個獨立 iOS 開發者,並且是 Enter Universe 的作者。

接近兩年前我釋出了 27 個iOS開源庫,讓你的開發坐上火箭吧。這是我在這裡最棒的文章了(根據 Medium 使用者的反饋來看):

006tNc79gy1fbwupkcy3mj30rs09t0u1.jpg

如果有 15.5 萬人 很擔心能否跨越網路上連山排海般的文字找到最棒的 iOS 開源庫,那我來傳遞。

可以看一下我的 GitHub 主頁,在這篇文章之後又星了超過 180 個 repositories,所以是時候更新我的 Medium 了。

跟 33 個 pod 打個招呼,它們會讓你 2017 年的開發坐上火箭。點火發射啦。

QQ截圖20170207150619.png

照片版權:(NASA/Joel Kowsky)

在文章的底部你會找到 TL;DR 即總結列表,列出了所有這些庫,並且有相應的連結以及 CocoaPods 名字(如果有的話)。閱讀過程中不需要記筆記。現在開始談正事。

006tNc79gy1fbwv4heh9oj30m804w3yw.jpg

Instagram 程式設計師做的,IGListKit 是資料驅動的 UICollectionView 框架,為了構建快速和可擴充套件的列表。另外,它有助於你在 app 結束對於大量檢視控制器的使用。看看這篇來自 Ray Wenderlich 的教程,關於如何在專案中實現這個庫,或者讀讀這篇Rodrigo Cavalcante 的文章,關於遷移現有的 UITableView 到 IGListCollectionView。

006tNc79gy1fbwvmxyjtcj304q01oglj.jpg

Realm是一個直接執行在手機、平板和可穿戴裝置內部的移動端資料庫,不只是 iOS。如果你想試一點和 Core Data 不一樣的,就用 Realm。許多人說它是一個現代化的、產品已經可以替代蘋果原生的解決方案。

006tNc79gy1fbwvr3j88wj308y08w3yt.jpg

Moya 是你的 app 中缺失的網路層。不用再去想在哪兒(或者如何)安放網路請求,Moya 替你管理。

QQ截圖20170207152703.png

Swift 界 JSON 解析之王。

把這段程式碼:

1 2 3 4 5 if let statusesArray = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [[String: Any]],
let user = statusesArray[0]["user"] as? [String: Any], let username = user["name"] as? String { // Finally we got the username }

變成了這段:

1 2 3 4 let json = JSON(data: dataFromNetworking) if let userName = json[0]["user"]["name"].string { // Now you got your value }

自動替你完成了可選值的拆包。

5.Valet,作者是Square

Valet 允許你安全的在 iOS 或 OS X 鑰匙鏈中儲存資料,而不需要掌握任何鑰匙鏈如何工作的知識。它支援在一臺裝置的多個應用(同一個開發者)間分享資料,以及在一個應用中在多個裝置間利用 iCloud 進行分享。支援 Touch ID?沒問題。

QQ截圖20170207152921.png

由谷歌製作(好吧,收購),應該是 iOS 最好的免費分析解決方案。追蹤 app 使用量、使用者活躍度、以及事件;設定使用者屬性;建立自定義受眾;還有更多。

QQ截圖20170207152957.png

Facebook 為他們的 app Paper 創造了這個非同步 UI SDK。如果你想讓你的 app 總是每秒用 60 幀的速度來渲染,一定要看看這個庫。這兒有一篇來自 Buffer 團隊的故事:

使用者安裝了你的 app 之後,就會看見一個空白的 UITableView。

DZNEmptyDataSet 幫助你避免這個情況,它提供了 Empty Data Set Pattern 的預設實現。

QQ截圖20170207153150.png

QQ截圖20170207153243.png

Chameleon 是一個輕量、又強大的 iOS 顏色框架。它基於“軟體應用程式應該輕鬆地實現功能,同時保持漂亮的介面”這個想法而建立。

有了 Chameleon,你就不再需要搗鼓 RGB 值、浪費時間搞明白 app 里正確的顏色組合、以及為文字能否在 app 裡不同的背景下可以被看見而煩惱。

QQ截圖20170207153303.png

QQ截圖20170207153350.png

PermissionScope 是一個 Swift 框架,為了向用戶巧妙地請求許可權。它不只包含簡單的許可權請求 UI,還有統一的許可權 API 可以告訴你任意給定的系統許可權的狀態,當然也可以輕鬆地請求它們。

006tNc79gy1fbwwvze0u3j308w0fujrj.jpg

QQ截圖20170207153447.png

FileKit 是一個 Swift 框架,提供了簡單和富有表現力的檔案管理。看看使用示例。

SwiftyUserDefaults 讓 user defaults 用起來很愉悅,通過結合意味深長的 Swifty API 和靜態輸入的益處。在一個地方定義鍵,輕鬆地使用值型別,獲得額外的安全性和方便的編譯時檢查,這些都是免費的。

006tNc79gy1fbwx77r1gij30m8040t96.jpg

Kingfisher 是一個輕量、純 Swift 的庫,可以從網路中非同步下載和快取圖片。

006tNc79gy1fbwxaeq64ej30lk0cc407.jpg

Hero 是為了構建 iOS 試圖控制器過渡動畫的庫。它在 UIKit 繁瑣的過渡動畫 API 之上提供了一個層,使得自定義過渡動畫對於開發人員來說是一個輕鬆的任務。

006tNc79gy1fbwxdjs10cj30m806k0tf.jpg

Hedwig 是一個 Swift 包,提供了一組高階 API,可以讓你輕鬆地傳送電子郵件到SMTP伺服器。如果你打算在下一個神奇的 Swift 伺服器 app裡傳送 email,Hedwig 可能是一個好的選擇。

DeviceKit 是 UIDevice 的值型別替換。輕鬆獲取裝置資訊和電池電量。

QQ截圖20170207153911.png

漂亮的線圖、餅圖、條形圖、分佈圖、氣泡圖、雷達圖還有更多種類,這是一個圖表庫。

QQ截圖20170207153929.png

一個易於使用的UITableViewCell子類,允許顯示帶有多種轉換的可滑動按鈕。

QQ截圖20170207154016.png

QQ截圖20170207154126.png

簡單易用的隨機資料生成。

QQ截圖20170207154212.png

用 ResponseDetective 讓 iOS 裡的 HTTP 調適更容易 - 我們很高興地釋出新的,用於HTTP除錯的開源iOS工具 - ResponseDetective。你有多少次...

只需幾行程式碼,即可輕鬆建立漂亮,引人入勝的使用者指導頁體驗。

861914-a07496396a99367d.gif

861914-c1a62e19cdf5d7ee.gif

22. Quick + Nimble 作者是 もどかしい

QQ截圖20170207160131.png

Quick是 Swift 和 Objective-C 的BDD測試框架,和匹配器框架 Nimble 配合使用。

Natalie 生成基於 storyboard 檔案的 Swift 程式碼,使 storyboard 和 segue 更容易使用。生成的檔案減少了用字串作為 Segue 或 Storyboard 的識別符號的情況。

QQ截圖20170207160307.png

對Swift中的 reactive 程式設計感興趣?這裡是RxSwift。

QQ截圖20170207160350.png

GDPerformanceView在狀態列上方顯示 FPS,CPU 使用情況,app 和 iOS 版本,並通過 delegate 報告 FPS 和 CPU 使用情況。

QQ截圖20170207160426.png

Alamofire 是用 Swift 寫的 HTTP 網路庫。

QQ截圖20170207160509.png

SwiftyStoreKit 是一個輕量的 app 內購框架,支援 iOS 8.0+,tvOS 9.0+和macOS 10.10+。

Swift 裡直觀的日期處理。

Swift 里加密相關的幫助函式實現。

QQ截圖20170207160703.png

完全自定義的 iOS 日曆庫,相容 Objective-C 和 Swift。

QQ截圖20170207160708.png

模仿 Twitter 的圖片瀏覽器。

006tNc79gy1fbx0firjtwj30m803xq30.jpg

PromiseKit 是對於任意有 swiftc 的平臺的周到和完整的 promises 實現,它有優秀的 Objective-C 橋接和賞心悅目的 iOS、macOS、tvOS 和 watchOS 專業化。

QQ截圖20170207160919.png

Ensembles 是一個 Objective-C 框架——也支援 Swift —— 它擴充套件了Apple的Core Data框架,為Mac OS和iOS添加了點對點同步。多個 SQLite persistent store 可以通過檔案同步平臺(如iCloud或Dropbox)耦合在一起。該框架可以容易地擴充套件以支援能夠在裝置之間移動檔案的任何服務,包括自定義伺服器。

這些庫的 TL;DR 列表,供快速查詢:

1.IGListKit [UICollectionView 框架] -> pod 'IGListKit', '~> 2.0.0

2.Realm [移動端資料庫] -> pod 'RealmSwift’

3.Moya [抽象網路層] -> pod 'Moya', ‘8.0.0’

4.SwiftyJSON [JSON 解析] -> pod 'SwiftyJSON’

5.Valet [鑰匙串幫手] -> pod 'Valet’

6.Firebase Analytics [分析] -> pod 'Firebase/Core’

7.AsyncDisplayKit [非同步 UI SDK] -> pod 'AsyncDisplayKit’

8.DZNEmptyDataSet [空狀態模式] -> pod 'DZNEmptyDataSet’

9.Chameleon [扁平化顏色框架] -> pod 'ChameleonFramework/Swift', :git => 'https://github.com/ViccAlexander/Chameleon.git'

10.PermissionScope [iOS 許可權框架] -> pod 'PermissionScope’

11.FileKit [檔案管理] -> pod 'FileKit', '~> 4.0.0’

12.SwiftyUserDefaults [user defaults 幫手] -> pod 'SwiftyUserDefaults’

13.Kingfisher [下載圖片] -> pod 'Kingfisher', '~> 3.0’

14.Hero [自定義試圖控制器過渡動畫] -> pod 'Hero’

15.Hedwig [傳送 email]

16.DeviceKit [裝置資訊] -> pod 'DeviceKit', '~> 1.0’

17.Charts [圖表] -> pod 'Charts’

18.MGSwipeTableCell [可以滑動的 table cells] -> pod 'MGSwipeTableCell’

19.RandomKit [隨機生成數字] -> pod 'RandomKit', '~> 3.0.0’

20.ResponseDetective [調適網路請求] -> pod 'ResponseDetective’

21.Onboard [使用者指導頁] -> pod 'Onboard’

22.Quick + Nimble [BDD 測試] -> pod 'Quick’

pod 'Nimble’

23.Natalie [從 storyboard 生成程式碼]

24.RxSwift [reactive 程式設計] -> pod 'RxSwift', '~> 3.0’

25.GDPerformanceView [實時 FPS and CPU 用量] -> pod 'GDPerformanceView-Swift', '~> 1.1.0’

26.Alamofire [網路] -> pod 'Alamofire', '~> 4.3’

27.SwiftyStoreKit [app 內購] -> pod 'SwiftyStoreKit’

28.Timepiece [date 幫手] -> pod 'Timepiece’

29.CryptoSwift [加密] -> pod 'CryptoSwift’

30.FSCalendar [日曆] -> pod 'FSCalendar’

31.ImageViewer [模仿 Twitter 的圖片檢視器] -> pod 'ImageViewer’

32.PromiseKit [promises] -> pod 'PromiseKit', '~> 4.0’

33.Ensembles [Core Data 同步] -> pod 'Ensembles’

感謝閱讀,這不是你在 Medium 上可以讀到的最短的文章!如果你喜歡這篇文章,點選下面的 ?? 來把它分享給你的朋友,這樣更多的人會發現這些非常棒的庫。你也可以 在 Twitter 上 follow 我,,那兒我發的基本都是 iOS 開發。謝謝!