iOS開發(fā)-常用第三方開源框架
分享一下我目前所在公司 iOS 項目中用到的一些 iOS 開源庫和第三方組件, 感謝開源, 減少了我們的勞動力, 節(jié)約了我們大量的時間, 讓我們有更多的時間和精力能更加專注的做好自己的產(chǎn)品
Objective-C篇
AFNetworking
https://github.com/AFNetworking/AFNetworking
在眾多iOS開源項目中,AFNetworking可以稱得上是最受開發(fā)者歡迎的庫項目。AFNetworking是一個輕量級的iOS、Mac OS X網(wǎng)絡通信類庫,現(xiàn)在是GitHub上第三大Objective-C庫。它建立在NSURLConnection、NSOperation等類庫的基礎上,讓很多網(wǎng)絡通信功能的實現(xiàn)變得十分簡單,因此,許多iOS應用開發(fā)都會使用到它。
支持HTTP請求和基于REST的網(wǎng)絡服務(包括GET、POST、PUT、DELETE等);
支持ARC;
要求iOS 5.0及以上版本;
有一些插件擴展已有的功能,還有一個功能齊全的API;
從URL中獲取JSON特別簡單。
SDWebImage
https://github.com/rs/SDWebImage
圖片異步下載和緩存管理的集大成者 UITableView的黃金搭檔 其代碼被開發(fā)者研究分享過無數(shù)次喵大的Kingfisher(可以說是Swift版的SDWebImage)也是深受其影響;
異步下載AFNetworking和MKNetworkKit都有實現(xiàn) 數(shù)據(jù)緩存也有FastImageCache與TMCache等 但是將其融會貫通的 唯有SDWebImage了;
除了簡單的使用sd_setImageWithURL之外 SDImageCache也是可以獨立使用的 功能也相當之強大。
MBProgressHUD
https://github.com/jdg/MBProgressHUD
簡單易用且穩(wěn)定的HUD組件,半透明黑底白字的風格也經(jīng)久不衰,loading提示的最佳選擇。
SVProgressHUD
https://github.com/SVProgressHUD/SVProgressHUD
另一個牛叉的單例HUD,SVProgressHUD能夠實現(xiàn)多種HUD效果,多用于程序正在執(zhí)行耗時較長的任務,需要用戶等待。除了顯示等待的HUD,還可以顯示命令執(zhí)行成功或者失敗的HUD。
LCProgressHUD
https://github.com/iTofu/LCProgressHUD
一個超簡單的活動指示器。適配橫屏。
只是覺得 MBProgressHUD 太麻煩了,所以再搞了一遍。
GMDCircleLoader
https://github.com/gabemdev/GMDCircleLoader
GMDCircleLoader 是一個簡潔易用的加載視圖,類似顯示任務進展的蘋果加載視圖。
MJRefresh
https://github.com/CoderMJLee/MJRefresh
用法簡單的下拉刷新框架:一行代碼搞定
JHRefresh
https://github.com/Jiahai/JHRefresh
可快速自定義下拉刷新界面
MJExtension
https://github.com/CoderMJLee/MJExtension
轉換速度快、使用簡單方便的字典轉模型框架
JSONModel
https://github.com/icanzilb/JSONModel
TTQRCodeScanner
https://github.com/change2hao/TTQRCodeScanner
社會化分享SDK
ShareSDK3
https://github.com/MobClub/ShareSDK3.x-for-iOS
MOBFoundation
https://github.com/MobClub/MOBFoundation
ShareSDKUI
https://github.com/MobClub/ShareSDKUI
IQKeyboardManager
https://github.com/hackiftekhar/IQKeyboardManager
iOS 鍵盤自適應,再也不用擔心鍵盤擋住輸入框了
WMPageController
https://github.com/wangmchn/WMPageController
實現(xiàn)控制器翻頁的簡單解決方法
DCPathButton
https://github.com/Tangdixi/DCPathButton
ZYQAssetPickerController
https://github.com/heroims/ZYQAssetPickerController
ZYQAssetPickerController 可同時選擇本地相冊的多張照片,然后將它們顯示在ScrollView中。支持iOS 5.0 以上。支持橫豎屏,支持iPhone以及iPad,高度可自定制化。
WTReTextField
https://github.com/pieceofsummer/WTReTextField
WTReTextField 是 UITextField 的之類,實現(xiàn)了通過正則表達式對輸入值進行限制的功能。
FDFullscreenPopGesture
https://github.com/forkingdog/FDFullscreenPopGesture
利用Runtime自定義控制器POP手勢動畫
EScrollerView
https://github.com/Gorilla957/EScrollerView
一個可以自動滾動的跑馬燈(幻燈、圖片滾動)
Swift篇
Alamofire
https://github.com/Alamofire/Alamofire
Alamofire是一個用Swift寫的優(yōu)雅的網(wǎng)絡庫。你曾經(jīng)用過AFNetworking嗎?ALamofire是它的弟弟。年輕也更有才華,當然啦(AFNetworking是用Objective-C寫的)。
當你想要抽象簡化App中的網(wǎng)絡請求時,Alamofire是你需要的,Alamofire是一個Http網(wǎng)絡請求庫,構建在NSURLSession和基礎URL加載系統(tǒng)之上,它用簡單優(yōu)雅的接口很好的封裝了網(wǎng)絡請求。
SwiftyJSON
https://github.com/SwiftyJSON/SwiftyJSON
Swift的Explicit types(顯示類型)可以確保我們不會在代碼中犯錯和出現(xiàn)bug。但是有時處理起來還是比較麻煩,特別是和JSON打交道的時候。幸運的是,SwiftyJSON提供了可讀性更好的方式幫我們處理JSON數(shù)據(jù)。還提供了可選的自動解析!
ObjectMapper
https://github.com/Hearst-DD/ObjectMapper
如果你寫過一個通過API獲取信息的app,你可能需要花大量時間寫代碼把你的響應結果映射為你的object。ObjectMapper可以幫你把JSON格式響應結果轉換成你的model對象,反之亦然。換句話說,它幫你把JSON映射成對象,也可以把對象轉換成JSON。嵌套的對象也支持。
SwiftDate
https://github.com/malcommac/SwiftDate
Swift中的日期處理庫
Quick
https://github.com/Quick/Quick
Quick是一個行為驅動(BDD)開發(fā)框架,它的靈感來自于RSpec,Specta, 和Ginkgo。配合Nimble一起使用,Nimble是一個測試匹配框架。
Eureka
https://github.com/xmartlabs/Eureka
Eureka可以幫你簡單優(yōu)雅的實現(xiàn)動態(tài)table-view表單。它由rows,sections和forms組成。如果你的app包含大量表單,Eureka可以真正幫你節(jié)省時間。
RxSwift
https://github.com/ReactiveX/RxSwift
RxSwift是一個基于Swift的的函數(shù)式響應編程框架。更具體點,RxSwift是是Rx的一個Swift語言版本(還有Java版本RxJava,js->RxJs)它的目標是讓異步和事件數(shù)據(jù)流操作更簡單。KVO observing, async operations and delegates are all unified under abstraction of sequence(還沒來的及學習掩面哭),如果你已經(jīng)使用過ReactiveCocoa,你接受起來會比較簡單(都是函數(shù)式編程思想)
SnapKit
https://github.com/SnapKit/SnapKit
SnapKit是一個用少量代碼寫出不丟可讀性auto layout的AutoLayout庫。
Spring
https://github.com/MengTo/Spring
Spring是一個可以幫你用代碼或者直接在Storybard創(chuàng)建動畫的動畫庫,在Storyboard你可以用runtime(通過設置IBInspectable屬性)來創(chuàng)建動畫,Spring已經(jīng)成長為一個全面發(fā)展的動畫庫 支持很多已經(jīng)存在的動畫。
Kingfisher
https://github.com/onevcat/Kingfisher
Kingfisher是一個輕量的下載和緩存網(wǎng)絡圖片庫。下載和緩存是異步進行操作,已經(jīng)下載好的圖片會緩存在內(nèi)存和本地,極大得提高app的體驗。
CoreStore
https://github.com/JohnEstropia/CoreStore
CoreStore是一個基于Core Data的封裝庫。它的目標是安全優(yōu)雅和Core Data進行交互。CoreStore的API提供了常用的有效的方法讓你和你的數(shù)據(jù)庫進行交互。
ReachabilitySwift
https://github.com/ymsheng/ReachabilitySwift
SnappingStepper
https://github.com/yannickl/SnappingStepper
SnappingStepper 是用 Swift 寫成的一個 UIStepper 的優(yōu)雅的替代品,有拇指滑塊,可更加靈活地控制數(shù)值更新。
SwiftWebViewBridge
https://github.com/ShawnFoo/SwiftWebViewBridge
Swift version of WebViewJavascriptBridge with more simplified, friendly methods to send messages between Swift and JS in UIWebViews.
Obj-C和JavaScript互通消息的橋梁
Mustache
https://github.com/Zewo/Mustache
Mustache templates for swift 3.0.
SQLite.swift
https://github.com/stephencelis/SQLite.swift
簡單、輕量,使用上最SQL的SQLite封裝庫
SugarRecord
https://github.com/pepibumur/SugarRecord
基于CoreData與REALM的好用封裝
SweetAlert
https://github.com/codestergit/SweetAlert-iOS
帶動畫效果彈窗封裝類
RAMAnimatedTabBarController
https://github.com/Ramotion/animated-tab-bar
靈動的動畫標簽欄類庫
PNChart-Swift
https://github.com/kevinzhow/PNChart-Swift
帶動畫效果的圖表控件庫
LTMorphingLabel
https://github.com/lexrus/LTMorphingLabel
各種文字動畫效果
Cartography
https://github.com/robb/Cartography
用代碼解決麻煩的AutoLayout
FontBlaster
https://github.com/ArtSabintsev/FontBlaster
在app里加載自定義字體更簡單。
開源庫
| name | describe |
|---|---|
| FMDB | 本地數(shù)據(jù)庫組件 |
| UICKeyChainStore | 存放用戶賬號密碼組件 |
| Reachability | 監(jiān)測網(wǎng)絡狀態(tài) |
| DateTools | 友好化時間 |
| MWPhotoBrowser | 一款簡單的iOS照片瀏覽控件 |
| CTAssetsPickerController | 一個選擇器組件, 支持從用戶的相片庫選擇多張照片和視頻。 |
| QBPopupMenu | 無需使用圖片文件的 iOS 彈出式菜單 |
| UAAppReviewManager | 一個能夠讓你方便地將提醒用戶評分的功能加入 App 的工具 |
| Mantle | 主要用來將 JSON 數(shù)據(jù)模型化為 Model 對象 |
| MTLFMDBAdapter | Mantle 和 FMDB 的轉換工具 |
| FMDBMigrationManager | 支持 iOS SQLite 數(shù)據(jù)庫遷移 |
| Bugsnag | 集成 Bugsnag 到應用中 |
| GVUserDefaults | 對 NSUserDefaults 進行了封裝, 方便的進行本地化存儲操作 |
| FCCurrentLocationGeocoder | 對用戶當前地理位置進行正向地址編碼和反向地址編碼 |
| AFSwipeToHide | 頁面滾動時隱藏工具欄 |
| BaiduTranslate | 非官方百度翻譯工具 |
| JSBadgeView | 添加帶動畫效果的未讀消息數(shù)提醒 |
| Masonry | 一個輕量級的布局框架, 用于替換官方的 AutoLayout 寫法 |
| MMPlaceHolder | 可在應用中顯示視圖的尺寸 |
| TOWebViewController | 可在應用中嵌套 Web 頁面 |
| VPImageCropper | VPImageCropper 可以讓你輕松實現(xiàn)微信選取圖片并裁剪成頭像的控件。 |
| JCScrollView | 快速給應用視圖添加滾動分頁效果 |
| BWTitlePagerView | 創(chuàng)建類似 Twitter 的導航欄分頁效果 |
| CNPPopupController | 創(chuàng)建彈出卡片視圖 |
| FeSpinner | 加入沙漏等多種動畫加載效果 |
| PulsingHalo | 脈沖動畫效果,可以自定義脈沖的顏色和擴散半徑??梢杂米鳎?、地圖的個人位置標注;2、發(fā)射信號的燈塔。 |
| JMHoledView | 方便創(chuàng)建用戶引導視圖 |
| RKNotificationHub | 添加未讀消息數(shù)顯示提醒 |
| CRToast | 從應用狀態(tài)欄彈出消息提醒 |
| KeychainIDFA | 獲取IDFA標示當設備唯一識別, 并保存到KeyChain中 |
| DZNEmptyDataSet | 為 TableView 和 CollectionView 展示空數(shù)據(jù)視圖 |
| SwipeView | 快速給應用添加上滑動視圖 |
| FXBlurView | 對視圖進行模糊操作 |
| AreaPicker | 中國省市地區(qū)選擇器 |
| MPTextView | 支持占位符的 UITextView 子類擴展 |
| MagicalRecord | 幫助清除 CoreData 引用的代碼, 協(xié)助 CoreData 工作 |
| THProgressView | 微型加載進度條 |
| WCAlertView | 對官方 Alert View 進行封裝, 更加容易使用 |
| GMGridView | GMGridView是一款開源的iOS(iPhone/iPad)表格視圖,允許用戶手勢對表格單元進行排序,在單元格需要展示時才進行裝載,這樣極大地提高了表格的效率。其中的伸縮/旋轉/平移手勢能夠讓用戶改變視圖,還能夠實現(xiàn)從CellView到全屏的切換。 |
| Reader | 該項目能夠讓iOS開發(fā)者輕而易舉地在iOS設備屏幕上顯示PDF文件。代碼通用,不需要任何XIB(因為所有UI元素都是代碼生成的,具有極大的靈活性),運行于iOS 4.0及其以上版本設備中,同時還支持所有Retina Display設備。 |
| AwesomeMenu | 路徑的菜單效果,當年橫空出世的Path 其優(yōu)美的設計 精彩的動畫,而最贊的 就是它的彈出菜單 一時成為了每個APP爭相模仿的對象,有了AwesomeMenu 你可以輕易的實現(xiàn)它。 |
| SBJson | JSON (JavaScript Object Notation) is a light-weight data interchange format that's easy to read and write for humans and computers alike. This library implements chunk-based JSON parsing and generation in Objective-C. |
| OHAttributedLabel | 富文本OHAttributedLabel |