摘要:iOS 開發(fā)者福利,本文為廣大iOS開發(fā)者準(zhǔn)備了33 款主宰 2017 iOS 開發(fā)的開源庫,已經(jīng)有十幾萬小伙伴關(guān)注了,提升你在 2017 年的開發(fā)。開始燃燒吧。
你好,iOS 開發(fā)者們!我的名字是 Pawel,是一名 iOS 獨(dú)立開發(fā)者,也是Enter Universe的作者。
大概在兩年前,我發(fā)布了提升開發(fā)的 27 個(gè) iOS 開源庫。這篇文章是我的一個(gè)最佳紀(jì)錄(用戶好評(píng)數(shù)):
因?yàn)橛?5.5萬人關(guān)注過這個(gè)話題,為了幫大家找到最好的 iOS 開源庫,我又要發(fā)文了。
查看我的 GitHub資料可以看到,距離上次發(fā)文,我又發(fā)現(xiàn)了180多個(gè)新的已加星標(biāo)的庫,所以現(xiàn)在是更新我的內(nèi)容的絕佳時(shí)機(jī)。
按需排列 33 個(gè)庫,提升你在 2017 年的開發(fā)。開始燃燒吧。
由 Instagram 開發(fā)人員制作,IGListKit 是用于構(gòu)建快速靈活列表的數(shù)據(jù)驅(qū)動(dòng)型的 UICollectionView 框架。此外,它可以幫助你在應(yīng)用程序中避免大量使用視圖控制器的情況。可查看Ray Wenderlich上的關(guān)于在你的項(xiàng)目中實(shí)現(xiàn)該庫的教程,或者從Rodrigo Cavalcante中看看關(guān)于將現(xiàn)有的 UITableView 遷移到 IGListCollectionView 的方法。
Realm是一款移動(dòng)數(shù)據(jù)庫,可直接運(yùn)行在手機(jī)、平板電腦和可穿戴設(shè)備中,它不僅適用于 iOS。如果你想嘗試與 Core Data 不同的東西,可以試試使用 Realm 。許多人說,它是一種現(xiàn)代化的、高效率的用于原生蘋果解決方案的替代物。
Moya 是你的應(yīng)用程序所缺少的網(wǎng)絡(luò)層。你不用思考將網(wǎng)絡(luò)請(qǐng)求放到哪里(以及如何放),Moya 會(huì)幫你處理這些問題。
Swift 中的 JSON 解析之王。
將下面內(nèi)容:
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
}
轉(zhuǎn)換為這種格式:
let?json?=?JSON(data:?dataFromNetworking)
iflet?userName?=?json[0]["user"]["name"].string?{
//?Now?you?got?your?value
}
可選封裝會(huì)自動(dòng)為你完成。
Valet 可以幫助你實(shí)現(xiàn)將數(shù)據(jù)安全地存儲(chǔ)在 iOS 或 OS X Keychain 中,而無需了解任何 Keychain 相關(guān)的工作原理。它支持在單個(gè)設(shè)備上的多個(gè)應(yīng)用程序(同一開發(fā)者)之間共享數(shù)據(jù),并在具有 iCloud 的設(shè)備上的實(shí)現(xiàn)跨設(shè)備的數(shù)據(jù)共享。它還支持 Touch ID 。
它(由 Google 出品)可能是 iOS 上最好的免費(fèi)分析解決方案。包括跟蹤應(yīng)用程序使用量、用戶活躍度,以及事件;設(shè)置用戶屬性;創(chuàng)建自定義受眾;和一些其他功能。
Facebook 為他們的 app Paper創(chuàng)造了這個(gè)異步 UI SDK。如果你想讓你的 app 總是每秒用 60 幀的速度來渲染,一定要看看這個(gè)庫。 這兒有一篇來自 Buffer 團(tuán)隊(duì)的故事。
通常用戶安裝一個(gè) APP 后,會(huì)看到一個(gè)空的 UITableView 。DZNEmptyDataSet 可以通過提供默認(rèn)的 Empty Data Set Pattern 的實(shí)現(xiàn)來回避這個(gè)問題。
Chameleon 是一個(gè)輕量卻功能強(qiáng)大的 iOS 顏色框架軟件。它基于的理念是:軟件應(yīng)用程序應(yīng)該可以不費(fèi)力氣且同時(shí)保持多個(gè)漂亮的界面。
使用 Chameleon ,你不再需要調(diào)配 RGB 值,不用浪費(fèi)時(shí)間去找你的 APP 合適的顏色組合,也不用擔(dān)心你 APP 的文字是否能在不同背景色上可讀。
PermissionScope 是一個(gè)用于智能請(qǐng)求用戶權(quán)限的 Swift 框架。 它不僅包含一個(gè)簡單的用戶界面來請(qǐng)求權(quán)限,還包含一個(gè)統(tǒng)一的許可 API ,可以告訴你任何指定的系統(tǒng)權(quán)限的狀態(tài)或輕松地對(duì)它們發(fā)起請(qǐng)求。
FileKit 是一個(gè) Swift 框架,提供簡單而富有表現(xiàn)力的文件管理。點(diǎn)此查看使用示例
SwiftyUserDefaults 讓 user defaults 用起來很愉悅,通過結(jié)合極具表現(xiàn)力的 Swifty API 和靜態(tài)輸入的優(yōu)勢(shì)。在一個(gè)地方定義鍵,輕松地使用值類型,并免費(fèi)獲得額外的安全性和方便的編譯時(shí)檢查。
Kingfisher 是一款輕量級(jí)的純 Swift 庫,用于從 Web 上異步下載和緩存圖像。
特性
異步圖像下載和緩存
基于 URLSession 的網(wǎng)絡(luò)。提供基本圖像處理器和濾鏡。
用于內(nèi)存和磁盤的多層緩存。
可取消下載和任務(wù)處理以提高性能。
組件獨(dú)立。可按需分別使用下載器或緩存系統(tǒng)。
預(yù)先獲取圖像并在必要時(shí)將其從緩存中顯示出來。
包含 UIImageView、NSImage和UIButton擴(kuò)展,可直接從 URL 設(shè)置圖像。
設(shè)置圖像時(shí)可內(nèi)置過渡動(dòng)畫。
可擴(kuò)展的圖像處理和圖像格式支持。
Hero 是構(gòu)建 iOS 視圖控制器過渡動(dòng)畫的庫。它在 UIKit 繁瑣的過渡動(dòng)畫 API 之上提供了一個(gè)層,使得自定義過渡動(dòng)畫對(duì)于開發(fā)人員來說是一個(gè)輕松的任務(wù)。
Hedwig 是一個(gè) Swift 包,提供一組高級(jí) API,可以讓你輕松地發(fā)送電子郵件到 SMTP 服務(wù)器。如果你打算在下一個(gè)神奇的 Swift 服務(wù)器應(yīng)用里發(fā)送電子郵件,Hedwig 可能是一個(gè)不錯(cuò)的選擇。
特性
支持通過普通、SSL 或 TLS(STARTTLS)端口連接到所有的 SMTP 服務(wù)器。
支持使用 PLAIN、CRAM-MD5、LOGIN 或 XOAUTH2 進(jìn)行認(rèn)證。
支持使用 HTML 正文和附件發(fā)送電子郵件。
支持自定義驗(yàn)證方法和郵件標(biāo)題,以跟蹤你的郵件活動(dòng)。
支持郵件按序發(fā)送,甚至可以同時(shí)發(fā)送郵件。
支持 Swift Package Manager。
完善的測(cè)試和文檔。
DeviceKit 是 UIDevice 的值類型替換。可輕松獲取設(shè)備的信息和電池電量。
特性
設(shè)備識(shí)別
設(shè)備系列檢測(cè)
設(shè)備組檢測(cè)
模擬器檢測(cè)
電池狀態(tài)
電池電量
Equatable
漂亮的曲線圖、餅狀圖、柱狀圖、散點(diǎn)圖、氣泡圖、雷達(dá)圖,更多的圖形都在 charts 庫里。
一個(gè)易于使用的 UITableViewCell 子類,可展示多種過渡方式的可滑動(dòng)按鈕。
簡單易用的隨機(jī)數(shù)據(jù)生成器。
ResponseDetective 是一個(gè)非侵入式框架,在調(diào)試時(shí)用于攔截應(yīng)用程序和服務(wù)器之間的任何的傳出請(qǐng)求和傳入響應(yīng),以進(jìn)行調(diào)試。
僅需添加幾行代碼,即可輕松創(chuàng)建一個(gè)美麗和吸引人的載入體驗(yàn)。
Quick 是一款專門用于 iOS 應(yīng)用開發(fā)的開源行為驅(qū)動(dòng)開發(fā)(BDD)測(cè)試框架,支持 Swift 和 Objective-C ,一般配合匹配框架 Nimble 使用。
Natalie 生成基于 Storyboard 文件的 Swift 代碼,使 Storyboard 和 Segue 更容易使用。生成的文件減少了用字符串作為 Segue 或 Storyboard 的標(biāo)識(shí)符的情況。
對(duì) Swift 的響應(yīng)式編程感興趣? 那不妨試試 RxSwift 。
示例
指定 GitHub 存儲(chǔ)庫的搜索 ...
let?searchResults?=?searchBar.rx.text.orEmpty
.throttle(0.3,?scheduler:?MainScheduler.instance)
.distinctUntilChanged()
.flatMapLatest?{?query?->?Observablein
ifquery.isEmpty?{
return.just([])
}
returnsearchGitHub(query)
.catchErrorJustReturn([])
}
.observeOn(MainScheduler.instance)
... 然后將結(jié)果綁定到你的視圖表
searchResults
.bind(to:?tableView.rx.items(cellIdentifier:"Cell"))?{
(index,?repository:?Repository,?cell)in
cell.textLabel?.text?=?repository.name
cell.detailTextLabel?.text?=?repository.url
}
.disposed(by:?disposeBag)
GDPerformanceView 可以在狀態(tài)欄上方顯示 FPS、CPU 使用情況以及應(yīng)用版本和 iOS 版本,并通過 delegate 報(bào)告 FPS 和 CPU 使用情況。
Alamofire 是一個(gè)用 Swift 編寫的 HTTP 網(wǎng)絡(luò)庫。
特性
鏈?zhǔn)降恼?qǐng)求/響應(yīng)方法
URL / JSON / plist 參數(shù)編碼
上傳類型支持:文件(File )、數(shù)據(jù)(Data )、流(Stream)以及 MultipartFormData
支持文件下載,下載支持?jǐn)帱c(diǎn)續(xù)傳
支持使用 NSURLCredential進(jìn) 行身份驗(yàn)證
支持 HTTP 響應(yīng)驗(yàn)證
上傳和下載進(jìn)度可隨進(jìn)程關(guān)閉
支持 cURL 命令輸出
支持動(dòng)態(tài)修改和重試請(qǐng)求
支持 TLS Certificate 和 Public Key Pinning
網(wǎng)絡(luò)可達(dá)性
文檔完善
SwiftyStoreKit 是一個(gè)輕量級(jí)的 App 內(nèi)購框架,支持 iOS 8.0+、tvOS 9.0+ 和 macOS 10.10+ 。
直觀的 Swift 日期處理庫。
特征:
直觀: Timepiece 提供了一系列輔助函數(shù),使得日期處理更簡單。
準(zhǔn)確: 精確依賴于 Foundation API , Timepiece 可以在無需深入了解的前提下輔助計(jì)算日期。
小: Timepiece 只有4個(gè)文件,你可以很簡單的閱讀其內(nèi)部結(jié)構(gòu)。
用 Swift 實(shí)現(xiàn)的且用于 Swift 中的加密相關(guān)函數(shù)和輔助結(jié)構(gòu)。
特點(diǎn)
易用
對(duì)于字符串和數(shù)據(jù)方便擴(kuò)展
支持增量更新(流式更新)
支持 iOS、 macOS、AppleTV、watchOS、Linux 等系統(tǒng)
完全可定制的 iOS 日歷庫,兼容 Objective-C 和 Swift 。
一個(gè)類似 Twitter 的圖像查看器。
PromiseKit 是對(duì)任意有 swiftc 的平臺(tái)的恰當(dāng)而又完整的 promises 實(shí)現(xiàn),它具有卓越的 Objective-C 橋接和專門為 iOS、macOS、tvOS 以及 watchOS 的特殊化處理。
Ensemble 是一個(gè) Objective-C 框架,支持 Swift ,擴(kuò)展了 Apple 的 Core Data 框架,為 Mac OS 和 iOS 添加了點(diǎn)對(duì)點(diǎn)的同步功能。多個(gè) SQLite 持久存儲(chǔ)可以通過像 iCloud 或 Dropbox 這樣的文件同步平臺(tái)整合在一起。該框架易于擴(kuò)展,可支持任何需要在不同設(shè)備之間傳輸文件的服務(wù),包括定制服務(wù)器。