Swift 优秀的第三方库

作者:张嘉夫

链接:https://www.zhihu.com/question/28816900/answer/76634312

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1.IGListKit作者是Instagram Engineering

<img src="https://pic4.zhimg.com/v2-7cf7f0ea0c426b44ce963614eebddf83_b.jpg" data-rawwidth="800" data-rawheight="176" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic4.zhimg.com/v2-7cf7f0ea0c426b44ce963614eebddf83_r.jpg">

Instagram 程序员做的,IGListKit 是数据驱动的 UICollectionView 框架,为了构建快速和可扩展的列表。另外,它有助于你在 app 结束对于大量视图控制器的使用。看看这篇来自Ray Wenderlich 的教程,关于如何在项目中实现这个库,或者读读这篇Rodrigo Cavalcante 的文章,关于迁移现有的 UITableView 到 IGListCollectionView。

Instagram/IGListKit - 为了构建快速和可扩展的列表而生的数据驱动 UICollectionView 框架

2.Realm作者是realm.io

<img src="https://pic1.zhimg.com/v2-e5862087960267ad0e333e23a838f000_b.png" data-rawwidth="170" data-rawheight="60" class="content_image" width="170">

Realm是一个直接运行在手机、平板和可穿戴设备内部的移动端数据库,不只是 iOS。如果你想试一点和 Core Data 不一样的,就用 Realm。许多人说它是一个现代化的、产品已经可以替代苹果原生的解决方案。

realm/realm-cocoa - Realm 是一个移动端数据库:Core Data 和 SQLite 的替代品

3.Moya作者是Ash Furrow

<img src="https://pic4.zhimg.com/v2-28493495c711fa3df370b1c37f611cdf_b.png" data-rawwidth="322" data-rawheight="320" class="content_image" width="322">

Moya 是你的 app 中缺失的网络层。不用再去想在哪儿(或者如何)安放网络请求,Moya 替你管理。

<img src="https://pic1.zhimg.com/v2-4ea5d7d1d004c22d80945eb43ea52860_b.png" data-rawwidth="800" data-rawheight="579" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic1.zhimg.com/v2-4ea5d7d1d004c22d80945eb43ea52860_r.png">

Moya/Moya - 用 Swift 写的网络抽象层

4.SwiftyJSON作者是Pinglin Tang

Swift 界 JSON 解析之王。

把这段代码:

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}

变成了这段:

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

自动替你完成了可选值的拆包。

SwiftyJSON/SwiftyJSON - 在 Swift 里处理 JSON 更好的方式

5.Valet作者是Square

Valet 允许你安全的在 iOS 或 OS X 钥匙链中存储数据,而不需要掌握任何钥匙链如何工作的知识。它支持在一台设备的多个应用(同一个开发者)间分享数据,以及在一个应用中在多个设备间利用 iCloud 进行分享。支持 Touch ID?没问题。

square/Valet - Valet 可以让你安全地在 iOS 或 OS X 钥匙链中存储数据,而不需要掌握任何钥匙链工作的知识。它…

6.Firebase Analytics作者是Google Developers

<img src="https://pic1.zhimg.com/v2-17c99e678621903c1b434a857d8cde38_b.png" data-rawwidth="800" data-rawheight="410" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic1.zhimg.com/v2-17c99e678621903c1b434a857d8cde38_r.png">由谷歌制作(好吧,

由谷歌制作(好吧,收购),应该是 iOS 最好的免费分析解决方案。追踪 app 使用量、用户活跃度、以及事件;设置用户属性;创建自定义受众;还有更多。

Firebase Analytics | Firebase - Firebase Analytics 是一个免费 app 监测解决方案,洞察 app 用量和用户活跃度

7.AsyncDisplayKit

<img src="https://pic1.zhimg.com/v2-1764209cbaa9ca899127ee3fbce09f10_b.png" data-rawwidth="800" data-rawheight="243" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic1.zhimg.com/v2-1764209cbaa9ca899127ee3fbce09f10_r.png">Facebook 为他们的 app

Facebook 为他们的 appPaper创造了这个异步 UI SDK。如果你想让你的 app 总是每秒用 60 帧的速度来渲染,一定要看看这个库。这儿有一篇来自 Buffer 团队的故事:

Buffer 里 iOS 的平滑滚动:如何(以及为什么)我们实现了 AsyncDisplayKit - 每年苹果的 WWDC 结束后,我们都会把最多的注意力转换到更新我们的 Buffer…

facebook/AsyncDisplayKit - iOS app 的平滑异步用户界面。

8.DZNEmptyDataSet

用户安装了你的 app 之后,就会看见一个空白的 UITableView。

DZNEmptyDataSet 帮助你避免这个情况,它提供了Empty Data Set Pattern的默认实现。

<img src="https://pic1.zhimg.com/v2-7f555a77f3ae544b6a97a52da57c2a24_b.png" data-rawwidth="800" data-rawheight="276" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic1.zhimg.com/v2-7f555a77f3ae544b6a97a52da57c2a24_r.png">

dzenbot/DZNEmptyDataSet - 嵌入式 UITableView/UICollectionView 的父类类别,用于显示空的数据集,无论何时…

9.Chameleon作者是Vicc Alexander

<img src="https://pic3.zhimg.com/v2-bcae05f7f2ed84c2d39fa56585d230b2_b.png" data-rawwidth="800" data-rawheight="428" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic3.zhimg.com/v2-bcae05f7f2ed84c2d39fa56585d230b2_r.png">

Chameleon 是一个轻量、又强大的 iOS 颜色框架。它基于“软件应用程序应该轻松地实现功能,同时保持漂亮的界面”这个想法而创建。

有了 Chameleon,你就不再需要捣鼓 RGB 值、浪费时间搞明白 app 里正确的颜色组合、以及为文本能否在 app 里不同的背景下可以被看见而烦恼。

<img src="https://pic1.zhimg.com/v2-82040ca5806a05629656ccc4eb630828_b.png" data-rawwidth="800" data-rawheight="428" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic1.zhimg.com/v2-82040ca5806a05629656ccc4eb630828_r.png">

<img src="https://pic3.zhimg.com/v2-882ac2a79c8b7edc4f4ea6858ace19ca_b.png" data-rawwidth="800" data-rawheight="466" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic3.zhimg.com/v2-882ac2a79c8b7edc4f4ea6858ace19ca_r.png">

ViccAlexander/Chameleon - iOS 的扁平颜色框架(Obj-C 和 Swift)

10.PermissionScope作者是Nick O’Neill

<img src="https://pic3.zhimg.com/v2-77e6a6b8a1916ceb124c1c57d7da05ca_b.png" data-rawwidth="800" data-rawheight="200" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic3.zhimg.com/v2-77e6a6b8a1916ceb124c1c57d7da05ca_r.png">PermissionScope 是一个 Swift 框架,为了向用户巧妙地请求权限。它不只包含简单的权限请求 UI,还有统一的权限 API 可以告诉你任意给定的系统权限的状态,当然也可以轻松地请求它们。

PermissionScope 是一个 Swift 框架,为了向用户巧妙地请求权限。它不只包含简单的权限请求 UI,还有统一的权限 API 可以告诉你任意给定的系统权限的状态,当然也可以轻松地请求它们。

<img src="https://pic4.zhimg.com/v2-739fe17560ee29612660da98fdbf8dd7_b.png" data-rawwidth="320" data-rawheight="570" class="content_image" width="320">

nickoneill/PermissionScope - 巧妙的 iOS 权限 UI 和 统一 API

11.FileKit作者是Nikolai Vazquez

<img src="https://pic3.zhimg.com/v2-601523c5e25a3ccda68d2995f04700fa_b.png" data-rawwidth="800" data-rawheight="200" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic3.zhimg.com/v2-601523c5e25a3ccda68d2995f04700fa_r.png">

FileKit 是一个 Swift 框架,提供了简单和富有表现力的文件管理。看看使用示例。

nvzqz/FileKit - 简单和富有表现力的 Swift 文件管理

12.SwiftyUserDefaults作者是Radek Pietruszewski

SwiftyUserDefaults 让 user defaults 用起来很愉悦,通过结合意味深长的 Swifty API 和静态输入的益处。在一个地方定义键,轻松地使用值类型,获得额外的安全性和方便的编译时检查,这些都是免费的。

radex/SwiftyUserDefaults - NSUserDefaults 的现代化 Swift API

13.Kingfisher作者是王巍

<img src="https://pic4.zhimg.com/v2-7f5b5c7eaf8a73302e7150560cc3d243_b.png" data-rawwidth="800" data-rawheight="144" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic4.zhimg.com/v2-7f5b5c7eaf8a73302e7150560cc3d243_r.png">

Kingfisher 是一个轻量、纯 Swift 的库,可以从网络中异步下载和缓存图片。

onevcat/Kingfisher

14.Hero作者是Luke Zhao

<img src="https://pic2.zhimg.com/v2-4b21080237395a4ae5430f8698a1d141_b.png" data-rawwidth="776" data-rawheight="444" class="origin_image zh-lightbox-thumb" width="776" data-original="https://pic2.zhimg.com/v2-4b21080237395a4ae5430f8698a1d141_r.png">

Hero 是为了构建 iOS 试图控制器过渡动画的库。它在 UIKit 繁琐的过渡动画 API 之上提供了一个层,使得自定义过渡动画对于开发人员来说是一个轻松的任务。

lkzhao/Hero - iOS 优雅的过渡动画库,用 Swift 写的。

15.Hedwig作者是王巍

<img src="https://pic3.zhimg.com/v2-ba7967db5d553036c5c98e41be730ce2_b.png" data-rawwidth="800" data-rawheight="236" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic3.zhimg.com/v2-ba7967db5d553036c5c98e41be730ce2_r.png">

Hedwig 是一个 Swift 包,提供了一组高级 API,可以让你轻松地发送电子邮件到SMTP服务器。如果你打算在下一个神奇的 Swift 服务器 app里发送 email,Hedwig 可能是一个好的选择。

onevcat/Hedwig - 像老板一样发送邮件到任意 SMTP 服务器,用 Swift 编写并且是跨平台的

16.DeviceKit作者是Dennis Weissmann

DeviceKit 是 UIDevice 的值类型替换。轻松获取设备信息和电池电量。

dennisweissmann/DeviceKit

17.Charts

<img src="https://pic3.zhimg.com/v2-48e7671fee37718e7e9f362736f6db22_b.png" data-rawwidth="800" data-rawheight="340" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic3.zhimg.com/v2-48e7671fee37718e7e9f362736f6db22_r.png">漂亮的线图、饼图、条形图、分布图、气泡图、雷达图还有更多种类,这是一个图表库。

漂亮的线图、饼图、条形图、分布图、气泡图、雷达图还有更多种类,这是一个图表库。

<img src="https://pic3.zhimg.com/v2-050688dffbbee6463fa786e268555f1e_b.png" data-rawwidth="800" data-rawheight="369" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic3.zhimg.com/v2-050688dffbbee6463fa786e268555f1e_r.png">

danielgindi/Charts - iOS/tvOS/OSX 的漂亮图表!跨平台的 MPAndroidChart 的苹果端

18.MGSwipeTableCell

一个易于使用的UITableViewCell子类,允许显示带有多种转换的可滑动按钮。

<img src="https://pic4.zhimg.com/v2-b475446ed1079b1eea6b9d7966e18393_b.png" data-rawwidth="478" data-rawheight="176" class="origin_image zh-lightbox-thumb" width="478" data-original="https://pic4.zhimg.com/v2-b475446ed1079b1eea6b9d7966e18393_r.png">

<img src="https://pic3.zhimg.com/v2-e6704502438d1f3a5ac4aa85bddb4756_b.png" data-rawwidth="478" data-rawheight="176" class="origin_image zh-lightbox-thumb" width="478" data-original="https://pic3.zhimg.com/v2-e6704502438d1f3a5ac4aa85bddb4756_r.png">

<img src="https://pic3.zhimg.com/v2-3c2010225f7e35b26bdb380948cfd7be_b.png" data-rawwidth="478" data-rawheight="176" class="origin_image zh-lightbox-thumb" width="478" data-original="https://pic3.zhimg.com/v2-3c2010225f7e35b26bdb380948cfd7be_r.png">

MortimerGoro/MGSwipeTableCell

19.RandomKit作者是Nikolai Vazquez

<img src="https://pic3.zhimg.com/v2-fab2bdd25d0bc67b9b96dc9d3544c79e_b.png" data-rawwidth="800" data-rawheight="200" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic3.zhimg.com/v2-fab2bdd25d0bc67b9b96dc9d3544c79e_r.png">

简单易用的随机数据生成。

#285: 用 RandomKit 生成随机数据 - 无论是在 app 的原型界面需要样本值,还是游戏逻辑的一些乘法器,随机…

nvzqz/RandomKit - Swift 中的随机数据生成

20.ResponseDetective

<img src="https://pic1.zhimg.com/v2-10657a62e9fdc471acf7bc0c53709d64_b.png" data-rawwidth="800" data-rawheight="97" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic1.zhimg.com/v2-10657a62e9fdc471acf7bc0c53709d64_r.png">

ResponseDetective 是一个非嵌入式框架,用于拦截应用程序和服务器之间的任何传出请求和传入响应以用于调试目的。

用 ResponseDetective 让 iOS 里的 HTTP 调适更容易 - 我们很高兴地发布新的,用于HTTP调试的开源iOS工具 - ResponseDetective。你有多少次...

netguru/ResponseDetective - 网络层里的夏洛克·福尔摩斯

21.Onboard

只需几行代码,即可轻松创建漂亮,引人入胜的用户指导页体验。

<img src="https://pic1.zhimg.com/v2-231be172a7ef1f807b7ed20efe2df7d4_b.jpg" data-rawwidth="288" data-rawheight="511" class="content_image" width="288">

<img src="https://pic4.zhimg.com/v2-5cdcb3f75cedfa2ea33b67c5b816fc07_b.jpg" data-rawwidth="284" data-rawheight="511" class="content_image" width="284">

mamaral/Onboard

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

<img src="https://pic3.zhimg.com/v2-d0983e6673f3fff34cc4d35c9b47370e_b.png" data-rawwidth="800" data-rawheight="248" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic3.zhimg.com/v2-d0983e6673f3fff34cc4d35c9b47370e_r.png">

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

Quick/Quick - Swift (以及 Objective-C)测试框架。

Quick/Nimble - Swift 和 Objective-C 的匹配器

23.Natalie作者是Marcin Krzyzanowski

Natalie 生成基于 storyboard 文件的 Swift 代码,使 storyboard 和 segue 更容易使用。生成的文件减少了用字符串作为 Segue 或 Storyboard 的标识符的情况。

krzyzanowskim/Natalie - Storyboard 代码生成器(Swift)

24.RxSwift作者是ReactiveExtensions*

<img src="https://pic3.zhimg.com/v2-f9360efb162e9151790b3bad3111d762_b.png" data-rawwidth="512" data-rawheight="512" class="origin_image zh-lightbox-thumb" width="512" data-original="https://pic3.zhimg.com/v2-f9360efb162e9151790b3bad3111d762_r.png">

对Swift中的 reactive 编程感兴趣?这里是RxSwift。

ReactiveX/RxSwift

25.GDPerformanceView作者是Daniil Gavrilov

<img src="https://pic3.zhimg.com/v2-d70803ebe4fbf014a70618ef8ab34306_b.png" data-rawwidth="750" data-rawheight="40" class="origin_image zh-lightbox-thumb" width="750" data-original="https://pic3.zhimg.com/v2-d70803ebe4fbf014a70618ef8ab34306_r.png">

<img src="https://pic3.zhimg.com/v2-51e09d36dbbac8b619ea692c6cf35bc2_b.png" data-rawwidth="750" data-rawheight="40" class="origin_image zh-lightbox-thumb" width="750" data-original="https://pic3.zhimg.com/v2-51e09d36dbbac8b619ea692c6cf35bc2_r.png">

<img src="https://pic1.zhimg.com/v2-cce1e09a6885d75c94a40850bb0d4de8_b.png" data-rawwidth="750" data-rawheight="40" class="origin_image zh-lightbox-thumb" width="750" data-original="https://pic1.zhimg.com/v2-cce1e09a6885d75c94a40850bb0d4de8_r.png">

<img src="https://pic3.zhimg.com/v2-8861069409c7e36c26a8d71854a25406_b.png" data-rawwidth="750" data-rawheight="40" class="origin_image zh-lightbox-thumb" width="750" data-original="https://pic3.zhimg.com/v2-8861069409c7e36c26a8d71854a25406_r.png">

GDPerformanceView在状态栏上方显示 FPS,CPU 使用情况,app 和 iOS 版本,并通过 delegate 报告 FPS 和 CPU 使用情况。

dani-gavrilov/GDPerformanceView-Swift

26.Alamofire

<img src="https://pic3.zhimg.com/v2-25270e282cf01c9601e59c091908dd4a_b.png" data-rawwidth="800" data-rawheight="235" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic3.zhimg.com/v2-25270e282cf01c9601e59c091908dd4a_r.png">

Alamofire 是用 Swift 写的 HTTP 网络库。

Swift 里的绝对网络指南,用 Alamofire - 自从2014年6月语言发布以来,Swift的网络已经成为争论焦点。甚至…

Alamofire/Alamofire - Swift 中 优雅的 HTTP 网络

27.SwiftyStoreKit作者是Andrea Bizzotto

<img src="https://pic1.zhimg.com/v2-e72bcee117a4230743c5085957cbf89c_b.png" data-rawwidth="800" data-rawheight="266" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic1.zhimg.com/v2-e72bcee117a4230743c5085957cbf89c_r.png">

SwiftyStoreKit 是一个轻量的 app 内购框架,支持 iOS 8.0+,tvOS 9.0+和macOS 10.10+。

bizz84/SwiftyStoreKit

28.Timepiece作者是AnyType

Swift 里直观的日期处理。

naoty/Timepiece

29.CryptoSwift作者是Marcin Krzyzanowski

Swift 里加密相关的帮助函数实现。

krzyzanowskim/CryptoSwift - CryptoSwift 是一个不断扩充的集合,包含了标准、安全、用 Swift 实现的加密算法

30.FSCalendar

<img src="https://pic3.zhimg.com/v2-cbe0a6d8fdf1c2d4766921c3e6aba516_b.png" data-rawwidth="800" data-rawheight="273" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic3.zhimg.com/v2-cbe0a6d8fdf1c2d4766921c3e6aba516_r.png">完全自定义的 iOS 日历库,兼容 Objective-C 和 Swift。

完全自定义的 iOS 日历库,兼容 Objective-C 和 Swift。

<img src="https://pic3.zhimg.com/v2-a12a6c6f82858169e96417db36268cee_b.jpg" data-rawwidth="1000" data-rawheight="295" class="origin_image zh-lightbox-thumb" width="1000" data-original="https://pic3.zhimg.com/v2-a12a6c6f82858169e96417db36268cee_r.jpg">

<img src="https://pic3.zhimg.com/v2-4ea0c081d715556b13e886843702443e_b.png" data-rawwidth="800" data-rawheight="290" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic3.zhimg.com/v2-4ea0c081d715556b13e886843702443e_r.png">

WenchaoD/FSCalendar

31.ImageViewer作者是Kristian Angyal

模仿 Twitter 的图片浏览器。

MailOnline/ImageViewer

32.PromiseKit

<img src="https://pic4.zhimg.com/v2-85f7736939dcd200379529b929cf4cc3_b.png" data-rawwidth="800" data-rawheight="141" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic4.zhimg.com/v2-85f7736939dcd200379529b929cf4cc3_r.png">

PromiseKit 是对于任意有 swiftc 的平台的周到和完整的 promises 实现,它有优秀的 Objective-C 桥接和赏心悦目的 iOS、macOS、tvOS 和 watchOS 专业化。

mxcl/PromiseKit - Swift 和 ObjC 的 Promises

33.Ensembles作者是Drew McCormack

<img src="https://pic3.zhimg.com/v2-414571e294e1b633360713a139279d46_b.png" data-rawwidth="414" data-rawheight="136" class="content_image" width="414">

Ensembles 是一个 Objective-C 框架——也支持 Swift —— 它扩展了Apple的Core Data框架,为Mac OS和iOS添加了点对点同步。多个 SQLite persistent store 可以通过文件同步平台(如iCloud或Dropbox)耦合在一起。该框架可以容易地扩展以支持能够在设备之间移动文件的任何服务,包括自定义服务器。

这些库的 TL;DR 列表,供快速查询:

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

Realm[移动端数据库] -> pod 'RealmSwift’

Moya[抽象网络层] -> pod 'Moya', ‘8.0.0’

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

Valet[钥匙串帮手] -> pod 'Valet’

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

AsyncDisplayKit[异步 UI SDK] -> pod 'AsyncDisplayKit’

DZNEmptyDataSet[空状态模式] -> pod 'DZNEmptyDataSet’

Chameleon[扁平化颜色框架] -> pod 'ChameleonFramework/Swift', :git => 'ViccAlexander/Chameleon'

PermissionScope[iOS 权限框架] -> pod 'PermissionScope’

FileKit[文件管理] -> pod 'FileKit', '~> 4.0.0’

SwiftyUserDefaults[user defaults 帮手] -> pod 'SwiftyUserDefaults’

Kingfisher[下载图片] -> pod 'Kingfisher', '~> 3.0’

Hero[自定义试图控制器过渡动画] -> pod 'Hero’

Hedwig[发送 email]

DeviceKit[设备信息] -> pod 'DeviceKit', '~> 1.0’

Charts[图表] -> pod 'Charts’

MGSwipeTableCell[可以滑动的 table cells] -> pod 'MGSwipeTableCell’

RandomKit[随机生成数字] -> pod 'RandomKit', '~> 3.0.0’

ResponseDetective[调适网络请求] -> pod 'ResponseDetective’

Onboard[用户指导页] -> pod 'Onboard’

Quick+Nimble[BDD 测试] -> pod 'Quick’

pod 'Nimble’

Natalie[从 storyboard 生成代码]

RxSwift[reactive 编程] -> pod 'RxSwift', '~> 3.0’

GDPerformanceView[实时 FPS and CPU 用量] -> pod 'GDPerformanceView-Swift', '~> 1.1.0’

Alamofire[网络] -> pod 'Alamofire', '~> 4.3’

SwiftyStoreKit[app 内购] -> pod 'SwiftyStoreKit’

Timepiece[date 帮手] -> pod 'Timepiece’

CryptoSwift[加密] -> pod 'CryptoSwift’

FSCalendar[日历] -> pod 'FSCalendar’

ImageViewer[模仿 Twitter 的图片查看器] -> pod 'ImageViewer’

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

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

感谢阅读,这不是你在 Medium 上可以读到的最短的文章!如果你喜欢这篇文章,点击下面的 ❤️ 来把它分享给你的朋友,这样更多的人会发现这些非常棒的库。你也可以在 Twitter 上 follow 我,,那儿我发的基本都是 iOS 开发。谢谢!

hey,还有一件事,如果你已经注意到我了,可以看看我现在的一个并不属于 iOS 编程世界的主要项目:

对科普,业余天文学和太空探索感兴趣?认识一下Enter Universe(是的,它是直接可以点击的!)。

<img src="https://pic4.zhimg.com/v2-7af79c9e461180334ad0917e6e4a987f_b.jpg" data-rawwidth="1000" data-rawheight="666" class="origin_image zh-lightbox-thumb" width="1000" data-original="https://pic4.zhimg.com/v2-7af79c9e461180334ad0917e6e4a987f_r.jpg">

感谢阅读!点赞,分享,关注,然后下次再见!

-------------以下为原答案-------------

本文翻译自Medium,原作者是Paweł Białecki,原文

27个iOS开源库,让你的开发坐上火箭吧

你不会想错过他们,真的。

我爱开源。

并且我喜欢开发者们,把他们宝贵的私人时间用来创造神奇的东西,然后他们会和其他人分享并且不求回报。开源作者和贡献者,你们是最帅的。感谢你们一直以来的工作。

所以,因为我是一个分类整理狂,这是我从iOS开源库中选出的最喜欢的这些项目的顺序都是随机的,全部都很酷。

绝大部分库是支持CocoaPods的,所以把它们添加到你的Xcode项目中轻而易举。

文章的尾部你会看到一个太长不看的版本——一个简单的列表,只有标题和到项目的链接。如果你发现这篇文章是有用的,把它和你的iOS开发者兄弟们分享。好东西需要被传播。

DZNEmptyDataSet

这本应该是iOS中一个标准、内置的解决空table和collection view的方式。默认的如果你的table view是空的,屏幕就是空的。但这不是你能提供的最好的用户体验。

用了这个库,你只需要遵循一系列协议,iOS会优雅地接管你的collection view并且会正确、好看地显示给用户信息。很明显,每个iOS项目都应该采用。

<img src="https://pic3.zhimg.com/c6bb4ee140c9b3e0beb12c4113c25c96_b.png" data-rawwidth="753" data-rawheight="528" class="origin_image zh-lightbox-thumb" width="753" data-original="https://pic3.zhimg.com/c6bb4ee140c9b3e0beb12c4113c25c96_r.png">

这是完全可自定义的。

CocoaPods:

pod ‘DZNEmptyDataSet’

GitHub

2. PDTSimpleCalendar

你的app是否需要一个简单、好看并且有效的日历组件呢?

现在你有了——PDTSimpleCalendar很有可能是最棒的iOS日历组件。有很多方式来自定义它,逻辑有效而且好看。

<img src="https://pic2.zhimg.com/88e326d9b6cfb3c59438a9e5a01115cd_b.png" data-rawwidth="612" data-rawheight="564" class="origin_image zh-lightbox-thumb" width="612" data-original="https://pic2.zhimg.com/88e326d9b6cfb3c59438a9e5a01115cd_r.png">

CocoaPods:

pod 'PDTSimpleCalendar'

GitHub

3. MagicalRecord

他们说,Core Data很简单。他们说,它很好很简单。哈哈,你是认真的吗,苹果?一顿陈词滥调的代码被添加到每个项目里,这真的不够优雅和简单。更不用说添加、移除和更新很多实体,保存上下文,为不同的环境创建不同的Core Data栈,等等等等。我当然很喜欢Core Data,但是苹果真的可以通过一个简单的好方法来简化它——MagicalRecord方法。

MagicalRecord的工作就像一个Core Data的包装,并且向开发者隐藏了所有无关的东西。如果你曾经用过活跃纪录模式(例如Ruby on Rails),那你已经掌握它了。如果你在app里用Core Data的话真的真心推荐这个库。

CocoaPods:

pod 'MagicalRecord'

GitHub

4. Chameleon

如果你读到了这一点,你是一个很好的程序员,而不是一个设计师。这就是为你准备的。

<img src="https://pic4.zhimg.com/d6a4b7ff14bd6a80a05ddf529e72f99b_b.png" data-rawwidth="800" data-rawheight="428" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic4.zhimg.com/d6a4b7ff14bd6a80a05ddf529e72f99b_r.png">

Chameleon是iOS的一个颜色框架。它用好看、摩登的扁平化颜色扩展了UIColor。它也给了我们能力来创建调色板,里面是我们自己定义的颜色。它可以做很多其他事,探索readme文件。如果你想要好看的应用程序,快把这个库加到你的项目里吧。

Chameleon基础扁平化颜色

CocoaPods:

pod 'ChameleonFramework'

GitHub

5. Alamofire

Alamofire是一个用Swift写的优雅的网络库。你曾经用过AFNetworking吗?ALamofire是它的弟弟。年轻也更有才华,当然啦(AFNetworking是用Objective-C写的)。

<img src="https://pic4.zhimg.com/8be834a8a26c1a0134de4d986794a963_b.png" data-rawwidth="850" data-rawheight="250" class="origin_image zh-lightbox-thumb" width="850" data-original="https://pic4.zhimg.com/8be834a8a26c1a0134de4d986794a963_r.png">

需要做网络相关比如下载、上传、获取JSON等等?Alamofire是为你准备的。GitHub上8000人的选择不会错。

CocoaPods:

pod 'MagicalRecord'

GitHub

6. TextFieldEffects

你不觉得标准的UITextField有一点无聊吗?我也是——所以对TextFieldEffects说hello吧!我不会写太多,我只会展示你一些这个库可以做的例子:

是的,这些就是简单的易用的控制器。你甚至可以用storyboard里的IBDesignable!

不幸的是这个库不支持CocoaPods(如果你来自未来,而这在一些时间之前改变了的话,请在Twitter上让我知道),但它支持Carthage。你也可以简单的从GitHub下载项目,并且把它添加到你的workspace里。

Carthage:

github "raulriera/TextFieldEffects"

GitHub

7. GPUImage

你曾经创建过一个摄像机app吗?如果没有,看完这个库你就肯定会的。

<img src="https://pic1.zhimg.com/d18762cd87f59f22def6123db2d33284_b.png" data-rawwidth="240" data-rawheight="240" class="content_image" width="240">

GPUImage可能性

GPUImage提供我们一个GPU-accelerated摄像头效果(图像和视频都可以),熊熊燃烧般的速度。App Store里有几百个app使用这个库——其中就有我的一个:

<img src="https://pic2.zhimg.com/ce4f586c5503377a682a12430253d381_b.png" data-rawwidth="640" data-rawheight="135" class="origin_image zh-lightbox-thumb" width="640" data-original="https://pic2.zhimg.com/ce4f586c5503377a682a12430253d381_r.png">

我的一个app中用的GPUImage

GitHub上8869个收藏并且还在持续增加。

CocoaPods:

pod 'GPUImage'

GitHub

8. iRate

在App Store获得更多评价最好的方式是什么?我没有明确的数据来回答这个问题,但如果要我来猜测的话,我会说只要简单的询问用户就可以了。也许这是一个老套的方式——大部分开发者现在创建自定义的app内置提醒——但如果你没有时间或者不想所有事都从头做起,用iRate比不用要好。并且这就是iRate——一个小库,你包含在你的项目里并且忘记询问用户去评价了——iRate会自动替你完成,在合适的时间里。

CocoaPods:

pod 'iRate'

GitHub

9. GameCenterManager

喜欢或讨厌一个人,在这种情况下管理Game Center非常简单,只需要一点我们最著名的反模式的帮助(你的游戏里只有Game Center,对吧?)

<img src="https://pic2.zhimg.com/72eb2862e5ecb3a88247fc1c8a6776c9_b.png" data-rawwidth="725" data-rawheight="100" class="origin_image zh-lightbox-thumb" width="725" data-original="https://pic2.zhimg.com/72eb2862e5ecb3a88247fc1c8a6776c9_r.png">

诚实地说,在iOS里香草管理Game Center并不是那么困难,但用这个库就是简单和快速。更好的是好的敌人。

<img src="https://pic1.zhimg.com/c1d46072731266aa10da0af927670b38_b.png" data-rawwidth="1000" data-rawheight="646" class="origin_image zh-lightbox-thumb" width="1000" data-original="https://pic1.zhimg.com/c1d46072731266aa10da0af927670b38_r.png">

我的一个游戏里就用了它,真是一个愉悦的体验。

CocoaPods:

pod 'GameCenterManager'

GitHub

10. PKRevealController 2

这是一个真正的宝石,我最喜欢的iOS控件之一。PKRevealController是一个可滑动的侧边栏(向左、向右或者都可以),用你的手指来滑动(或者只通过点击按钮,但这样就没有滑动酷了)。

<img src="https://pic3.zhimg.com/2e4c6b26ee1db3ed04e65b8d402769ce_b.png" data-rawwidth="722" data-rawheight="410" class="origin_image zh-lightbox-thumb" width="722" data-original="https://pic3.zhimg.com/2e4c6b26ee1db3ed04e65b8d402769ce_r.png">

我使用过一些其它库,提供这种空间,PKRevealController是最好的。设置起来很简单,高度可自定义,手势识别非常非常好。它可以在iOS SDK中包含作为一个标准空间,真的。

CocoaPods:

pod 'PKRevealController'

GitHub

11. SlackTextViewController

你曾经用过Slack iOS app吗?如果你在一个更大的软件公司工作的话,很有可能回答是。对于没有这么回答的人——Slack很坚硬。Slack的iOS app也是,特别是对于很好的、自定义的文本输入控件…就是你现在有的——你的app里可以用的代码!

自增长文本域?对的。手势识别,自动填充,多媒体粘贴?对的。简单的易用的?对的。你还可能需要什么?

CocoaPods:

pod 'SlackTextViewController'

GitHub

12. RETableViewManager

RETableViewManager会帮助你动态创建和管理你的table view,都用代码。它提供我们预先定义好的cell(布尔型、文本、日期等等。——看下面的截图),你也可以创建你的自定义视图,和默认的一起使用。

<img src="https://pic3.zhimg.com/e9769f750681399cae22def5822f24aa_b.png" data-rawwidth="1000" data-rawheight="830" class="origin_image zh-lightbox-thumb" width="1000" data-original="https://pic3.zhimg.com/e9769f750681399cae22def5822f24aa_r.png">

左侧截图好老套!

这些你都可以在storybard里做而不需要这个库的帮忙,但有的时候代码比可视化编辑器更简单。

CocoaPods:

pod 'RETableViewManager'

GitHub

13. PermissionScope

有用的库,通过在询问用户之前提示用户需要系统许可带来更好的用户体验。高度可接受程度->更多用户活动使用app->更好的留存->更好的数据->更多的下载。被高度推荐的pod。

<img src="https://pic4.zhimg.com/6032b9a93aa418273ea9867546a5ed9b_b.png" data-rawwidth="374" data-rawheight="666" class="content_image" width="374">

CocoaPods:

pod 'PermissionScope'

GitHub

14. SVProgressHUD

这个图片正在被正确的加载,不会等很久也不需要刷新页面。这就是SVProgressHUD在你的app里看起来的样子。如果你需要自定义等待指示,这里就有一个(很有可能就是最好的)。

CocoaPods:

pod 'SVProgressHUD'

GitHub

15. FontAwesomeKit

Font Awesome很酷,用这个库你可以轻松地添加字体到你的项目里,并且在多种方式里使用它。

<img src="https://pic3.zhimg.com/3cab09d5e1992f631478f2e4d7a040fa_b.jpg" data-rawwidth="1000" data-rawheight="405" class="origin_image zh-lightbox-thumb" width="1000" data-original="https://pic3.zhimg.com/3cab09d5e1992f631478f2e4d7a040fa_r.jpg">

CocoaPods:

pod 'FontAwesomeKit'

GitHub

16. SnapKit

喜欢auto layout?你应该!

至少在storyboard里创建的时候。

用代码创建constraints是痛苦的,如果没有帮助的话,但幸运的是SnapKit在这里,使用它你可以轻松写你的constraints,声明方式。看看吧。

<img src="https://pic3.zhimg.com/821b2667dc113624343a67b40010090e_b.png" data-rawwidth="728" data-rawheight="197" class="origin_image zh-lightbox-thumb" width="728" data-original="https://pic3.zhimg.com/821b2667dc113624343a67b40010090e_r.png">

CocoaPods:

pod 'SnapKit'

GitHub

17. MGSwipeTableCell

另一个UI组件,在很多app里都常见,苹果应该考虑在iOS标准库里加入类似的东西。可滑动的table cell,这是这个pod最好的描述。最好的一个。

这些只是3个动画种类,还有很多。探索readme文件。

CocoaPods:

pod 'MGSwipeTableCell'

GitHub

18. Quick

Swift里的单元测试,给Swift(好吧,要给Objective-C),和Xcode融为一体。如果你是一个Objective-C粉,我会推荐你Specta而不是这个,但对于Swift Quick很有可能是最好的。

<img src="https://pic4.zhimg.com/bcdb0055f9cad828efe1576b10dc1c7f_b.png" data-rawwidth="1000" data-rawheight="310" class="origin_image zh-lightbox-thumb" width="1000" data-original="https://pic4.zhimg.com/bcdb0055f9cad828efe1576b10dc1c7f_r.png">

<img src="https://pic1.zhimg.com/08a2cf787b5cba2b1e46b3482070e4e0_b.png" data-rawwidth="1000" data-rawheight="718" class="origin_image zh-lightbox-thumb" width="1000" data-original="https://pic1.zhimg.com/08a2cf787b5cba2b1e46b3482070e4e0_r.png">

CocoaPods:

pod 'Quick'

GitHub

19. IAPHelper

app内购带给我们很多陈词滥调的代码,用这个库就不需要了,把最有关交易金钱的普遍的任务从iOS用户到你的(或者你的公司的)钱包简单包装起来。

CocoaPods:

pod 'IAPHelper'

GitHub

20. ReactiveCocoa

好吧,这里我们有一个小怪兽。

<img src="https://pic4.zhimg.com/9705b92cd460504a70409487d17f081f_b.png" data-rawwidth="624" data-rawheight="132" class="origin_image zh-lightbox-thumb" width="624" data-original="https://pic4.zhimg.com/9705b92cd460504a70409487d17f081f_r.png">

ReactiveCocoa并不是很小、易用的项目,就像这个列表里其它项目一样。ReactiveCocoa带给我们一种完全不同的编程方式/结构,基于值的信号和流。这是完全的头脑风暴,首先你需要忘记你曾经学习的来理解它是如何工作的。这不是一个简单的任务,但是是有回报的。

这不是一个合适的地方来教你使用ReactiveCocoa,但我会给你一些好的资源,如果你感兴趣的话。

Getting Started with ReactiveCocoaReactiveCocoaReactiveCocoa Tutorial - The Definitive Introduction: Part 1/2CocoaPods:

pod 'ReactiveCocoa'

GitHub

21. SwiftyJSON

让Swift里的JSON解析更简单。

CocoaPods:

pod 'SwiftyJSON'

GitHub

22. Spring

做动画更简单、可链和声明。

<img src="https://pic3.zhimg.com/018cd2013926dc4f2cb9330a4dd251a2_b.jpg" data-rawwidth="1000" data-rawheight="375" class="origin_image zh-lightbox-thumb" width="1000" data-original="https://pic3.zhimg.com/018cd2013926dc4f2cb9330a4dd251a2_r.jpg">

CocoaPods:

pod 'SwiftyJSON'

GitHub

23. FontBlaster

在app里加载自定义字体更简单。

CocoaPods:

pod 'FontBlaster'

GitHub

24. TAPromotee

交叉推销你的app是最棒的销售策略之一,你可以在它们中免费实现。用这个库非常简单,你不再能为自己辩解为什么不用它——增加TAPromotee到你的podfile,配置、然后免费享受更多下载。

<img src="https://pic1.zhimg.com/9645893e4d710d123d3fb505ca14f6f4_b.png" data-rawwidth="375" data-rawheight="667" class="content_image" width="375">

CocoaPods:

pod 'TAPromotee'

GitHub

25. Concorde

在你的app加载很多JPEG吗?用Concorde你可以加载地更好看。有进度的方式。

CocoaPods:

pod 'Concorde'

GitHub

26. KeychainAccess

管理钥匙串权限的小帮手库。

<img src="https://pic1.zhimg.com/bef223b5322f96bd500fd5263e2c57b8_b.png" data-rawwidth="563" data-rawheight="999" class="origin_image zh-lightbox-thumb" width="563" data-original="https://pic1.zhimg.com/bef223b5322f96bd500fd5263e2c57b8_r.png">

<img src="https://pic2.zhimg.com/322d9e1533b9702062797249c90df655_b.png" data-rawwidth="563" data-rawheight="1000" class="origin_image zh-lightbox-thumb" width="563" data-original="https://pic2.zhimg.com/322d9e1533b9702062797249c90df655_r.png">

<img src="https://pic1.zhimg.com/9d213c3d221d3dc699ba0987daecb010_b.png" data-rawwidth="563" data-rawheight="1000" class="origin_image zh-lightbox-thumb" width="563" data-original="https://pic1.zhimg.com/9d213c3d221d3dc699ba0987daecb010_r.png">

CocoaPods:

pod 'KeychainAccess'

GitHub

27. iOS-charts

最后但重要的——iOS图表库!很简单和有效,我不会在这儿写太多——滑动到下面去看在你的app用它可以干嘛。

是的,所有东西都是可用的,作为一个可放进去(好吧,也许是“可写进去”)的组件。

不幸的是目前还没有CocoaPods支持,所以你需要手动拖动项目到你的Xcode workspace中。

所有库的太长不看列表,快速访问:

1.DZNEmptyDataSet[UI, 空table view解决方案]

2.PDTSimpleCalendar[UI, 可放入日历组件]

3.MagicalRecord[Core Data帮手实现活动记录模式]

4.Chameleon[UI, 颜色框架]

5.Alamofire[Swift网络]

6.TextFieldEffects[UI, 自定义外观text fields]

7.GPUImage[快速图像处理]

8.iRate[获得用户评价]

9.GameCenterManager[轻松管理Game Center]

10.PKRevealController[UI, 滑动边栏]

11.SlackTextViewController[UI, 高度自定义text field]

12.RETableViewManager[用代码动态创建table view]

13.PermissionScope[UI, 巧妙的提前问用户要系统许可]

14.SVProgressHUD[UI, 自定义等待菊花]

15.FontAwesomeKit[轻松地添加酷字体到你的app中]

16.SnapKit[用代码轻松auto layout]

17.MGSwipeTableCell[UI, 可滑动的table view cells]

18.Quick[Swift 单元测试框架]

19.IAPHelper[app内购封装帮手]

20.ReactiveCocoa[FRP框架]

21.SwiftyJSON[Swift JSON库]

22.Spring[动画框架]

23.FontBlaster[轻松在app中加载自定义字体]

24.TAPromotee[在你的app中交叉提示,置入界面]

25.Concorde[下载和解码进度化JPEGs]

26.KeychainAccess[轻松管理钥匙串]

27.iOS-charts[漂亮的图表库]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,601评论 4 369
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,367评论 1 305
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,249评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,539评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,967评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,929评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,098评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,825评论 0 207
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,609评论 1 249
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,796评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,282评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,603评论 3 261
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,277评论 3 242
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,159评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,959评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,079评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,874评论 2 277

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,638评论 4 59
  • 奔波了一春 苦闷了一夏 熬过了一秋 冬到了 想像小动物一样冬眠 想像蝴蝶一样做茧 想静下来 离开世俗纷扰 潜心凝练...
    雪中竹绿阅读 162评论 0 0
  • 10.17,05:34
    Phmiracle阅读 97评论 0 0
  • 文/墨菲 最近快被表妹烦死了。 表姐快看,我最爱的CP求婚好甜蜜啊,居然用荠菜花求婚,就因为它的花语是:春天的新娘...
    写手墨菲阅读 444评论 0 0