33个有用的轮子

原文
33 款主宰 2017 iOS 开发的开源库
业界资讯 来源:开源中国社区 发布:2017-06-16 浏览:612

摘要:iOS 开发者福利,本文为广大iOS开发者准备了33 款主宰 2017 iOS 开发的开源库,已经有十几万小伙伴关注了,提升你在 2017 年的开发。开始燃烧吧。


你好,iOS 开发者们!我的名字是 Pawel,是一名 iOS 独立开发者,也是 Enter Universe 的作者。
大概在两年前,我发布了 提升开发的 27 个 iOS 开源库。这篇文章是我的一个最佳纪录(用户好评数):

因为有15.5万人关注过这个话题,为了帮大家找到最好的 iOS 开源库,我又要发文了。
查看我的 GitHub 资料可以看到,距离上次发文,我又发现了180多个新的已加星标的库,所以现在是更新我的内容的绝佳时机。
按需排列 33 个库,提升你在 2017 年的开发。开始燃烧吧。

  1. IGListKit

    由 Instagram 开发人员制作,IGListKit 是用于构建快速灵活列表的数据驱动型的 UICollectionView 框架。此外,它可以帮助你在应用程序中避免大量使用视图控制器的情况。可查看 Ray Wenderlich 上的关于在你的项目中实现该库的教程,或者从 Rodrigo Cavalcante 中看看关于将现有的 UITableView 迁移到 IGListCollectionView 的方法。
  2. Realm

    Realm 是一款移动数据库,可直接运行在手机、平板电脑和可穿戴设备中,它不仅适用于 iOS。如果你想尝试与 Core Data 不同的东西,可以试试使用 Realm 。许多人说,它是一种现代化的、高效率的用于原生苹果解决方案的替代物。
  3. Moya

    Moya 是你的应用程序所缺少的网络层。你不用思考将网络请求放到哪里(以及如何放),Moya 会帮你处理这些问题。
  4. SwiftyJSON
    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}

可选封装会自动为你完成。

  1. Valet
    Valet 可以帮助你实现将数据安全地存储在 iOS 或 OS X Keychain 中,而无需了解任何 Keychain 相关的工作原理。它支持在单个设备上的多个应用程序(同一开发者)之间共享数据,并在具有 iCloud 的设备上的实现跨设备的数据共享。它还支持 Touch ID 。

  2. Firebase Analytics


    它(由 Google 出品)可能是 iOS 上最好的免费分析解决方案。包括跟踪应用程序使用量、用户活跃度,以及事件;设置用户属性;创建自定义受众;和一些其他功能。

  3. AsyncDisplayKit


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

  4. DZNEmptyDataSet
    通常用户安装一个 APP 后,会看到一个空的 UITableView 。DZNEmptyDataSet 可以通过提供默认的 Empty Data Set Pattern 的实现来回避这个问题。

  5. Chameleon


    Chameleon 是一个轻量却功能强大的 iOS 颜色框架软件。它基于的理念是:软件应用程序应该可以不费力气且同时保持多个漂亮的界面。
    使用 Chameleon ,你不再需要调配 RGB 值,不用浪费时间去找你的 APP 合适的颜色组合,也不用担心你 APP 的文字是否能在不同背景色上可读。

    [图片上传中。。。(12)]

  6. PermissionScope


    PermissionScope 是一个用于智能请求用户权限的 Swift 框架。 它不仅包含一个简单的用户界面来请求权限,还包含一个统一的许可 API ,可以告诉你任何指定的系统权限的状态或轻松地对它们发起请求。
    [图片上传中。。。(14)]

  7. FileKit
    [图片上传中。。。(15)]
    FileKit 是一个 Swift 框架,提供简单而富有表现力的文件管理。点此查看使用示例

  8. SwiftyUserDefaults
    SwiftyUserDefaults 让 user defaults 用起来很愉悦,通过结合极具表现力的 Swifty API 和静态输入的优势。在一个地方定义键,轻松地使用值类型,并免费获得额外的安全性和方便的编译时检查。
    [图片上传中。。。(16)]
    Kingfisher 是一款轻量级的纯 Swift 库,用于从 Web 上异步下载和缓存图像。
    特性
    异步图像下载和缓存

基于 URLSession 的网络。提供基本图像处理器和滤镜。

用于内存和磁盘的多层缓存。

可取消下载和任务处理以提高性能。

组件独立。可按需分别使用下载器或缓存系统。

预先获取图像并在必要时将其从缓存中显示出来。

包含 UIImageView、NSImage和UIButton扩展,可直接从 URL 设置图像。

设置图像时可内置过渡动画。

可扩展的图像处理和图像格式支持。

  1. Hero
    [图片上传中。。。(17)]
    Hero 是构建 iOS 视图控制器过渡动画的库。它在 UIKit 繁琐的过渡动画 API 之上提供了一个层,使得自定义过渡动画对于开发人员来说是一个轻松的任务。
  2. Hedwig
    [图片上传中。。。(18)]
    Hedwig 是一个 Swift 包,提供一组高级 API,可以让你轻松地发送电子邮件到 SMTP 服务器。如果你打算在下一个神奇的 Swift 服务器应用里发送电子邮件,Hedwig 可能是一个不错的选择。
    特性
    支持通过普通、SSL 或 TLS(STARTTLS)端口连接到所有的 SMTP 服务器。

支持使用 PLAIN、CRAM-MD5、LOGIN 或 XOAUTH2 进行认证。

支持使用 HTML 正文和附件发送电子邮件。

支持自定义验证方法和邮件标题,以跟踪你的邮件活动。

支持邮件按序发送,甚至可以同时发送邮件。

支持 Swift Package Manager。

完善的测试和文档

  1. DeviceKit
    DeviceKit 是 UIDevice 的值类型替换。可轻松获取设备的信息和电池电量。
    特性
    设备识别

设备系列检测

设备组检测

模拟器检测

电池状态

电池电量

Equatable

  1. Charts
    [图片上传中。。。(19)]
    漂亮的曲线图、饼状图、柱状图、散点图、气泡图、雷达图,更多的图形都在 charts 库里。
    [图片上传中。。。(20)]
  2. MGSwipeTableCell
    一个易于使用的 UITableViewCell 子类,可展示多种过渡方式的可滑动按钮。
    [图片上传中。。。(21)]
    [图片上传中。。。(22)]
    [图片上传中。。。(23)]
  3. RandomKit
    [图片上传中。。。(24)]
    简单易用的随机数据生成器。
  4. ResponseDetective
    [图片上传中。。。(25)]
    ResponseDetective 是一个非侵入式框架,在调试时用于拦截应用程序和服务器之间的任何的传出请求和传入响应,以进行调试。
  5. Onboard
    仅需添加几行代码,即可轻松创建一个美丽和吸引人的载入体验。
    [图片上传中。。。(26)] [图片上传中。。。(27)]
  6. Quick + Nimble
    [图片上传中。。。(28)]
    Quick 是一款专门用于 iOS 应用开发的开源行为驱动开发(BDD)测试框架,支持 Swift 和 Objective-C ,一般配合匹配框架 Nimble 使用。
  7. Natalie
    Natalie 生成基于 Storyboard 文件的 Swift 代码,使 Storyboard 和 Segue 更容易使用。生成的文件减少了用字符串作为 Segue 或 Storyboard 的标识符的情况。
  8. RxSwift
    [图片上传中。。。(29)]
    对 Swift 的响应式编程感兴趣? 那不妨试试 RxSwift 。
    示例
    指定 GitHub 存储库的搜索 ...
    let searchResults = searchBar.rx.text.orEmpty .throttle(0.3, scheduler: MainScheduler.instance) .distinctUntilChanged() .flatMapLatest { query -> Observable<[Repository]> in if query.isEmpty { return .just([]) } return searchGitHub(query) .catchErrorJustReturn([]) } .observeOn(MainScheduler.instance)

... 然后将结果绑定到你的视图表
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)

[图片上传中。。。(30)]

  1. GDPerformanceView
    [图片上传中。。。(31)]
    GDPerformanceView 可以在状态栏上方显示 FPS、CPU 使用情况以及应用版本和 iOS 版本,并通过 delegate 报告 FPS 和 CPU 使用情况。

  2. Alamofire
    [图片上传中。。。(32)]
    Alamofire 是一个用 Swift 编写的 HTTP 网络库。
    特性
    链式的请求/响应方法
    URL / JSON / plist 参数编码
    上传类型支持:文件(File )、数据(Data )、流(Stream)以及 MultipartFormData
    支持文件下载,下载支持断点续传
    支持使用 NSURLCredential进 行身份验证
    支持 HTTP 响应验证
    上传和下载进度可随进程关闭
    支持 cURL 命令输出
    支持动态修改和重试请求
    支持 TLS Certificate 和 Public Key Pinning
    网络可达性
    文档完善

  3. SwiftyStoreKit
    [图片上传中。。。(33)]
    SwiftyStoreKit 是一个轻量级的 App 内购框架,支持 iOS 8.0+、tvOS 9.0+ 和 macOS 10.10+ 。

  4. Timepiece
    直观的 Swift 日期处理库。
    特征:
    直观: Timepiece 提供了一系列辅助函数,使得日期处理更简单。

准确: 精确依赖于 Foundation API , Timepiece 可以在无需深入了解的前提下辅助计算日期。

小: Timepiece 只有4个文件,你可以很简单的阅读其内部结构。

  1. CryptoSwift
    用 Swift 实现的且用于 Swift 中的加密相关函数和辅助结构。
    特点
    易用

对于字符串和数据方便扩展

支持增量更新(流式更新)

支持 iOS、 macOS、AppleTV、watchOS、Linux 等系统

  1. FSCalendar
    [图片上传中。。。(34)]
    完全可定制的 iOS 日历库,兼容 Objective-C 和 Swift 。
    [图片上传中。。。(35)]
    [图片上传中。。。(36)]
  2. ImageViewer
    一个类似 Twitter 的图像查看器。
    [图片上传中。。。(37)]
  3. PromiseKit
    [图片上传中。。。(38)]
    PromiseKit 是对任意有 swiftc 的平台的恰当而又完整的 promises 实现,它具有卓越的 Objective-C 桥接和专门为 iOS、macOS、tvOS 以及 watchOS 的特殊化处理。
  4. Ensembles
    [图片上传中。。。(39)]
    Ensemble 是一个 Objective-C 框架,支持 Swift ,扩展了 Apple 的 Core Data 框架,为 Mac OS 和 iOS 添加了点对点的同步功能。多个 SQLite 持久存储可以通过像 iCloud 或 Dropbox 这样的文件同步平台整合在一起。该框架易于扩展,可支持任何需要在不同设备之间传输文件的服务,包括定制服务器。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,611评论 4 59
  • 任何尝试都会测试失败,...是输出的提示文字。(后面都是这样) expression为空时通过,否则测试失败。ex...
    呵呵哒1991阅读 849评论 0 2
  • tableViewCell 的三哥部分 1. 最左侧 编辑部分 2 中间 内容部分 3 最右侧 辅助部分 //ce...
    9bf19a4010ab阅读 159评论 0 0
  • 【背景】: 1、 公司品牌比较高端,无锡建材市场较多,而且本地人比较相信本地品牌。我们品牌不做广告,只靠活动推广、...
    飞驰的死兔子阅读 806评论 0 0
  • (一)杨枝净水赞杨枝净水, 遍洒三千, 性空八德利人天, 福寿广增延, 灭罪消愆, 火焰化红莲。南无清凉地菩萨摩诃...
    媚眼看网事阅读 2,924评论 0 1