iOS開發-經常使用第三方開源框架介紹(你瞭解的ios只是冰山一角)

iOS開發-經常使用第三方開源框架介紹(你瞭解的ios只是冰山一角)

圖像:

1.圖片瀏覽控件MWPhotoBrowser 
      實現了一個照片瀏覽器相似 iOS 自帶的相冊應用,可顯示來自手機的圖片或者是網絡圖片,可自動從網絡下載圖片並進行緩存。可對圖片進行縮放等操做。
      下載:https://github.com/mwaterfall/MWPhotoBrowser
 
目前比較活躍的社區仍舊是Github,除此之外也有一些不錯的庫散落在Google Code、SourceForge等地方。因爲Github社區太過主流,這裏主要介紹一下Github裏面流行的iOS庫。
 
首先整理了一份Github上排名靠前的iOS庫(大概600個repos)
 
除了逛一下每日/每個月流行以外,也能夠到這裏來看一下整個iOS Repos的排名。
 
下面是一些比較流行的第三方庫:
 
HTTP
相比較之下,AFNetworking是目前最優秀的一個了:輕量、易用、使用者多、開發者有在積極維護。在AFN出現以前,這個角色是由ASIHTTPRequest扮演的,只是到如今年久失修了。關於AFN和ASI的對比,這裏有一篇不錯的文章http://www.infoq.com/cn/articles/afn_vs_asi。除此以外,MKNetworkKit和RestKit也有必定的使用者。
 
Socket
CocoaAsyncSocket無疑是目前封裝得最完善的Socket庫了:支持異步TCP/UDP,支持GCD,Objective-C接口封裝。。目前沒有發現能夠與之相比的同類產品。。
 
JSON
JSONKit算是第三方中最優秀的一個了:性能很高,文件少。在JSONKit以前,SBJson很是很是流行,可是SBJson性可以差,只是因爲歷史緣由仍然存在在某些工程裏面。若是工程只須要支持iOS5以上的系統,那就能夠放棄那些第三方Json庫了,直接用系統提供的NSJSONSerialization,性能比第三方的好,又是官方API。。
 
XMPP
如今作個實時聊天,XMPP協議算是很成熟的方案了。XMPPFramework一個很不錯的選擇,能夠直接和OpenFire服務器打交道。項目不大人手很少的話,能夠看看這個。
 
基礎工具類
SSToolkit算是一個不錯的工具包,提供各類好比編碼、加密、字符串處理等等東西,還提供了一些不錯的自定義控件,而且文檔很是齊全。
 
框架
過去有不少人再用three20,這個東西太大過重,文檔又少,到頭來連Facebook都中止維護了。做爲替代品nimbus如今流行了開來,關鍵在於它文檔齊全。國內有個MVC框架叫BeeFramework,號稱是頂級框架而且功能超過nimbus,有興趣的能夠看一下。 ReactiveCocoa把響應式編程這種上流的東西帶了過來,值得試一試。。
 
數據存儲
仍是挺多人(好比我)喜歡直接跟SQLite打交道的,這方面fmdb封裝的很不錯。若是用CoreData來作存儲的,能夠用一下MagicalRecord。
 
圖像處理
GPUImage無疑是這方面的集大成者了。用OpenGL ES2.0來實時處理圖片和視頻流,性能和功能都是頂尖的。
 
開發和調試工具
PonyDebugger看上去是一個不錯的調試工具,能夠在電腦瀏覽器上遠程調試iOS程序、查看試圖層次、網絡等等。CocoaLumberjack是個Log工具,號稱是能夠提供企業級Log,使用者也挺多。
 
爲了瞭解一下目前第三方庫的普及程度,下面列舉一些知名App對第三方庫的依賴。
 
網易新聞
AppleReachability
ASIHTTPRequest
EGOTableViewPullRefresh
GTMNSString+HTML
MGTemplateEngine
MPOAuth
RegexKitLite
SDWebImage
SSZipArchive
wax
 
Garageband
MurmurHash
libpng
zlib
SBJson (json-framework)
 
iWork三套件
MOKit
Boost C++ Library
protobuf
OpenGL Mathematics
SQLite
cephes math library
 
Pinterest
AFNetworking
AFHttpClientLogger
Facebook SDK
iRate
MAKVONotificationCenter
SDWebImage
SFHFKeychainUtils
SSPullToRefresh
SVProgressHUD
TTTAttributedLabel
TTTLocalizedPluralString
UIAlertView-Blocks
 
多看閱讀
fmdb
ASIHTTPRequest
FreeType
JSONKit
Objective-Zip
Skia (Google)
MBProgressHUD
 
淘寶
MAZeroingWeakRef
MBProgressHUD
ABContactHelper
ASIHTTPRequest
CocoaLumberjack
EGOTableViewPullRefresh
fmdb
GTMBase64
JSONKit
SBJson (json-framework)
RTLabel
SDWebImage
SVPullToRefresh
three20
ziparchive
 
微信
cocos2d
EGOTableViewPullRefresh
Facebook iOS SDK
JSONKit
SBJson
ziparchive
 
QQ
ASIHTTPRequest
FMDB
CocoaAsyncSocket
JSONKit
MBProgressHUD
OpenUDID
SBJson
SVPullToRefresh
 
百度地圖
AFNetworking
GTMBase64
JSONKit
MBProgressHUD
RNCachingURLProtocol
SDWebImage
 
微博
ABContactHelper
AFNetworking
ASIHTTPRequest
DACircularProgressView
DDProgressView
DTFoundation
fmdb
JSONKit
SBJson
MBProgressHUD
MTStatusBarOverlay
OpenUDID
SFHFKeychainUtils
 
人人
cocoaasyncsocket
ZipArchive
MBProgressHUD
JSONKit
GTMBase64
MKNetworkKit
HPGrowingTextView
zxing
 
能夠看到,這些大型的App的依賴都很混亂,因此稍微解釋一下。這些大公司都有一個iOS團隊來協同開發,團隊成員的水平也良莠不齊。有時因爲歷史緣由,例如某個App的某個組件依賴了ASIHttpRequest,但以後的新人改用了AFNetworking,就形成上面這種比較混亂的庫依賴關係。這就形成難以維護、代碼冗餘等問題了。因此,引入一個第三方庫必定要慎重考慮,若是可能,儘可能本身開發和實現相應的功能,第三方庫儘可能只做爲參考。 小團隊或者我的開發者能夠沒必要過多考慮,開發速度優先。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2014年8月7號新增
系統基礎庫
Category/Util
 sstoolkit 一套Category類型的庫,附帶不少自定義控件 功能不錯~    
 BlocksKit 將Block風格帶入UIKit和Founcation    
 cocoa-helpers 一些Cocoa的擴展 2年前的工程    
 CoconutKit 一系列擴展和一些自定組件    
 STUtils 一系列擴展包    
 PSFoundation 一系列擴展 和功能加強    
 ConciseKit 一系列宏定義 挺有意思    
 DTFoundation 又一系列擴展。。。    
 BBBootstrap 一些常見功能的擴展庫    
 cooliris-toolkit cooliris出品的基礎工具庫,從GoogleCode clone過來    
 BaseKit 一套基礎工具庫    
 NSObject-Utility-Categories 如題    
 NSArray-Utilities 如題    
 aqtoolkit 一些經常使用的東西    
 DLIntrospection 一些NSObject的擴展    
 NSDate-Extensions 如題日期    
 ALActionBlocks 在UIControl上添加的Block事件    
 jrswizzle 主要是swizzling    
 moriarty 一些還算有用的功能    
 QSUtilities 一些基礎庫 (Instagram有用到)    
 libextobjc 一堆oc的擴展    
 PrettyTimestamp 友好時間的擴展    
 ios-jail-break-detector 檢測是否越獄 有上線    
 crackify 檢測App是否被破解    
 NSBundle-OBCodeSigningInfo 檢查當前簽名、Sandbox狀態 MacOSX    
 UIView-AnimatedProperty 爲UIView添加動畫效果的property,有用到swizzle    
 Block-KVO Block風格的KVO~    
 MTDates 一些Data的category    
 CocoaSecurity 常見的哈希、加密解密算法    
 sskeychain 訪問keychain 支持iOS Mac    
 ABContactHelper 訪問聯繫人    
 UISS 用JSON的風格設置UIKit樣式    
 Underscore.m 仿JS的underscore.js來寫的,用於訪問和處理數據    
 TICoreDataSync 在不一樣設備間對CoreData進行同步 (iPhone iPad Mac)    
 SoloComponents-iOS 幾個輕量的組件,沒什麼用,2年沒更新    
 MAObjCRuntime 將運行時包裝成ObjC    
 Objective-C-Generics 經過宏定義勉強實現的範型    
 TBMacros 一些經常使用的宏定義    
 NSString-Ruby 爲Ruby程序員帶來的字符串相關功能    
 ObjectiveRecord CoreData包裝的活動記錄 有RoR風格的API    
 FastImageCache 滑動時快速顯示圖片的庫,Path開發    
基礎功能
 mediaextract 純C的一些經常使用媒體文件的解析讀取    
 objection 一個估計是java ee寫多了的人搞的。。註解依賴注入xx工廠之類的    
 Typhoon IoC容器啊~~    
 HTKit 一票亂七八糟的東西    
 StringScore 模糊匹配字符串 查找某兩個字符串的類似程度    
 RegexKitLite 正則表達式庫 (從SF.net mirror過來)    
 FormatterKit 一個NSString的格式化工具    
 TMCache 一個內存Cache    
 EGOCache EGOImage裏面的 Cache功能    
 HJCache 一個緩存網絡內容等的Cache    
 RNCryptor 加密解密相關 貌似更上流, note:去看一下他博客    
 ssziparchive zip壓縮 zip解壓~    
 ZipKit 一個ZipKit 從bitbucket Mirror過來    
 ZipKit 如同ZipKit 改成ARC了    
 zipzap Zip文件處理 底層爲libz    
 MTMigration 版本升時執行一次    
 MTControl jQuery風格touch事件綁定    
 storage 快速、線程安全的I/O存儲操做    
 CHCSVParser CVS文件解析    
 YLMoment 日期的解析,格式化等,支持多語言    
 CMUnistrokeGestureRecognizer 各類奇怪的手勢檢測    
 EKAlgorithms.git 常見算法的ObjC實現,包括排序、查找、數組、字符串、經常使用數據結構..    
框架/封裝
 three20 一個曾經用得普遍的龐大的iOS開發框架 已再也不維護    
 nimbus three20替代品 又一個龐大的框架    
 BeeFramework 一個基於MVC的框架, 比較大..    
 OmniGroup 一套很龐大的庫(OmniGroup) 支持Mac和iOS 更新迅速    
 ReactiveCocoa 一套響應式編程的框架(Functional Reactive Programming) 支持Mac    
 WebViewJavascriptBridge WebView和Cocoa之間的事件傳遞    
 OCUDL 自定義literals 有點意思~~    
 Kiwi 一個Behavior驅動編程框架? (BDD)?    
 Mantle 一個Model層, 替代CoreData 能夠生成Model對象~ Github官方出品..    
 MagicalRecord CoreData的包裝 簡化代碼    
 fmdb SQLite的封裝    
 KZPropertyMapper 一個Model的封裝,類JSON    
 BlockInjection 爲某個方法注入一個Block 相似AOP    
 NSObject-ObjectMap JSON和XML包裝到Object    
 Ejecta 經過OpenGL OpenAL來實現 WebCanvas JS等,很龐大~    
 FCModel 爲SQL程序員包裝一下CoreData    
功能/封裝
 iOS-System-Services 獲取各類設備信息 包括硬件、網絡、內存、進程等等    
 MKStoreKit iAP用的庫    
 CargoBay 一個包裝iAP StoreKit的庫    
 RMStore 很輕量的iAP包裝    
 QuincyKit 處理crach信息的庫 只有上架應用才能用 支持Mac    
 OpenUDID 系統UDID替代方案    
 UIDevice-with-UniqueIdentifier-for-iOS-5 另外一個UUID解決方案 但iOS7不能用了    
 uidevice-extension 一系列UIDevice的擴展 有PrivateAPI 最新的工程在cookbook-code裏    
 InAppSettingsKit 包裝了設置、URLScheme、Mail、Icon等東西    
 DTWebArchive 容許訪問剪貼板中的WebArchive格式富文本    
 routable-ios inApp的URL定義 在App內打開自定義URL (解耦)    
 JLRoutes 複雜的URL Scheme解析和路由    
 Emoji 訪問Emoji圖片的功能    
 PDKeychainBindingsController 以相似UserDefault的方式訪問Keychain    
 CoreTextWrapper 一個CoreText庫的包裝    
 Slash 對AttributeString的封裝    
 iHasApp 檢測某個App是否安裝,集成了常見的URL Scheme    
網絡
基礎
 AFNetworking 很棒的HTTP網絡通訊庫    
 asi-http-request 一個HTTP庫 一樣很知名 性能好,穩定 但已再也不維護    
 MKNetworkKit 一個HTTP庫 支持Mac 一樣也不錯    
 STHTTPRequest 一個很是簡單的http庫,包裝了NSURLConnection    
 RestKit 一個HTTP庫 用來與RESTful的服務進行交互    
 AFIncrementalStore 用CoreData和AFNetworking 將HTTP數據持久化    
 CocoaAsyncSocket TCP/UDP包裝庫 支持Mac 很棒    
 Reachability 判斷設備網絡狀況 和蘋果的很像 用ARC、GCD    
 SDReachability 判斷設備網絡狀況 和蘋果的很像,更友好?    
 socket.IO-objc 支持HTTP 長輪詢 socket.io    
 DTBonjour Bonjour和Wifi    
 XMPPFramework XMPP客戶端的庫~ 支持Mac    
 CocoaHTTPServer 一個輕量的HTTP Server 支持Mac    
 SocketRocket WebSocket客戶端~    
 MailCore IMAP SMTP郵件協議    
JSON
 JSONKit 性能很是好 (只比Apple原生的差一點)    
 json-framework SBJson 曾經用得很普遍的JSON 性能差    
 TouchJSON 又一個JSON庫    
 yajl-objc 一個JSON庫 能夠支持流解析 支持Mac    
 JSONModel 一個構建JSON Model的工具和庫    
XML/Html
 MWFeedParser Feed/Atom解析    
 RSSKit RSS Atom解析    
 ElementParser 提供Html和XML的解析    
 hpple 提供Html/XML解析    
 Objective-C-HMTL-Parser 一個很簡單的HTML解析 包裝了下libxml    
 RaptureXML 一個簡單的XML解析器 包裝了libxml    
 KissXML 解析XML的庫 包裝了libxml    
 TBXML 快速解析xml的庫    
 xmldocument 又一個解析XML的庫    
 XMLDictionary 蠻好用的一個XML轉NSDictionary的類~    
 XML-to-NSDictionary XML轉NSDictionary    
 MMMarkdown 一個渲染Markdown到HTML的小引擎    
 Ashton 在NSAttrbuteString和Html之間轉換    
 XMLParser XML解析成json~    
功能性
 EGOImageLoading 下載使用網絡圖片的庫    
 SDWebImage 異步加載網絡圖片 (UIImage Category)    
 TCBlobDownload 下載大文件/ 斷點續傳    
 GroundControl 一個經過遠程plist改變配置的庫    
 appirater 提醒用戶稍後到AppStore給你評分的功能    
 iRate 相似appirater 提醒用戶稍後到AppStore評分 支持Mac    
 ShareKit 分享到國外的一些社交網站 的功能 用的的人挺多    
 Harpy 新版本更新提醒    
 iVersion 新版本更新提醒 功能提示    
 DataKit 以相似CoreData的Model 來獲取網絡資源    
 SDURLCache URL緩存    
 objective-git libgit的包裝 挺龐大    
 nsrails RoR風格的網絡交互API    
SDK
 facebook-ios-sdk Facebook的SDK    
 MGTwitterEngine 一套Twtter庫    
 Twitter-OAuth-iPhone Twitter的OAuth功能    
 Foursquare-API-v2 Foursquare的庫    
 objectiveflickr Flicker API    
 octokit.objc Github的API    
 ParcelKit Dropbox封裝CoreData    
 cocoalibspotify spotify官方SDK    
 GDFileManagerKit 訪問 dropbox GDrive之類的雲存儲    
 

 
圖像
GPU OpenGL
 GPUImage 基於GPU的實時圖像視頻處理    
 XBImageFilters 一個GPU實時處理的庫 相似GPUImage    
 CeedGL 一個OpenGL的包裝 用起來更方便    
 rend-ios 一個OpenGL的輕量包裝 接近UIKit    
 GLView 在UIView的包裝 方便使用OpenGL    
 sift-gpu-iphone 一個包裝GL用的,不知道幹毛的    
 ShaderManager 如題 一個Manager 管理建立Shader    
 GLImageProcessing 演示如何用GPU處理圖片    
 FRD3DBarChart 用OpenGL繪製的3D柱形圖    
 EarthView 顯示3D地形圖 用OpenGL    
 CoreAR 一個挺有意思的AR    
 VRToolKit 一個虛擬現實的庫    
圖像處理
 NYXImagesKit 一套圖像處理的庫 加在UIImage上    
 ios-image-filters UIImage擴展 相似PS的功能 用CoreImage    
 vImageCategory UIImage擴展 簡單的一些處理    
 MGImageUtilities 幾個簡單的圖片處理 UIImage    
 UIImageAdjust 一些UIImage的擴展 如亮度 模糊等    
 CKImageAdditions 一些UIImage的不錯功能~    
 UIImage-BlurredFrame 僅模糊圖片中的一塊區域~    
 LBBlurredImage UIImage擴展 能夠模糊 不知道性能如何    
 FilterKit 爲拍照添加濾鏡 基於GPUImage    
 TCam 用CIFIlter實現的相似Instagram的類    
 CLImageEditor 一個功能齊全的圖像處理(濾鏡/曲線/裁減/旋轉/等等~)    
 PKCoreTechniques CA和CG的特性演示    
 UIImage-Categories UIImage的一些擴展    
 uiimage-dsp UIImage模糊的一些方法    
 UIImage-Sprite-Additions UIImage取Sprite~    
 iOS-Scratch-n-See 相似結冰玻璃用手畫開的效果~    
 OBGradientView 一個漸變色的CALayer 比系統的好用些    
 ANImageBitmapRep 一些Bitmap處理的方法    
 KGNoise 產生帶噪音的Image 支持Mac    
 KGNoiseColorTester 上面KGNoise的演示    
 SQRiskCursor 一個用CA和UIControl自定義控件的例子    
 AmazeKit 聽說是爲PNG加速 或本身畫 主要爲控件提高性能的    
 UIImage-PDF 如題 UIImage來顯示PDF    
 JMNoise 給UIView添加Noise噪音的    
 SWSnapshotStackView 圖片加上Stack外框    
 RMShapedImageView 一個UIImageView的子類 能忽略透明地方的點擊    
 MOOMaskedIconView 一個經過Mask顯示Icon的庫 只要一個Mask 能夠生成不少風格的Icon 相似Tabbar    
 FTAssetRenderer 運行時的圖像Mask生成?    
 wolfpack 圖像處理庫CI CG    
 DSGraphicsKit 支持圖片常見處理 視圖控制3D等    
 uiimage-from-animated-gif 顯示gif    
 cam 一個AVFoundation的封裝、照相等功能    
 Filtrr 幾個Filter 速度也不行    
 ZXingObjC ZXing 二維碼/條形碼處理    
顏色
 uicolor-utilities UIColor擴展和色板    
 color 一系列UIColor擴展    
 ColorUtils 一個UIColor擴展    
 ColorConverter RGB和HSL轉換    
 InfColorPicker 一個色彩選擇器    
 RSColorPicker 一個不錯的色彩選擇器 有放大鏡    
 colorpicker 一個很強大的ColorPicker 包裝了挺多東西    
 ColorPicker 功能很棒的一個取色    
 ILColorPicker 一個還算標準的ColorPicker    
 NPColorPicker 一個HSV三角取色器    
 KZColorPicker 又一個HSV圓盤取色器    
 Color-Picker-for-iOS 一個簡單的單色Picker 有一個滑塊    
 LEColorPicker 一個ColorPicker能夠取到圖片的主色調等    
 UIColor-converter 一些UIColor的工具~~    
 SUColor 提供2K多的日本色    
 Colours-for-iOS 提供很多經常使用色 和幾個方法    
 ColorArt 相似iTunes的 取一幅圖畫的主要背景顏色等 (這是個Mac功能)    
 iOS7Colors iOS7的幾種經常使用顏色    
繪圖庫
 iOSPlot 畫餅圖/折線圖的庫 用CA    
 PNChart 扁平風格的折線圖/柱形圖    
 TEAChart 扁平風格的餅圖/柱形圖    
 ios-linechart 簡單好用的餅圖/折線圖    
 JYRadarChart 雷達圖(螂蛛網圖), 風格多樣    
 Core-Animation-Pie-Chart 用CA畫餅圖 示例    
 MSSimpleGauge 扇形儀表盤    
 FBDigitalFont LED液晶效果熒光字體,用CG實現    
 FBGlowLabel LED液晶效果熒光字體,UILabel    
 ADGraphView 一個CG繪畫庫 股票曲線演示    
 SVGKit 一個用CA來呈現SVG圖片的庫    
 Smooth-Line-View 用QuartZ畫出平滑的曲線    
 Smooth-Line-View 用上面的庫搭建的比較完整的畫板功能 有取色器等    
 SignatureDemo 一個QuartZ 觸摸畫平滑曲線的Demo~~~    
 DynamicGraphView 動態折線圖    
 XYPieChart 餅圖~有動畫    
 Animated-Paths 動畫畫出文字和圖形的輪廓~    
動畫/效果
CA
 CA360 一套完整的CA動畫Demo    
 Core-Animation-Fun-House 一套CA動畫展現Demo    
 Core-Animation-Demos 一套CA動畫Demo    
 EnterTheMatrix CA動畫演示Demo    
 ftutils 一套CA的Util庫 有一些經常使用動畫    
 Dazzle 用CA實現的各類有趣的粒子效果    
 AGGeometryKit CA和3D效果等    
 RBBAnimation 基於block的CA動畫    
 
常見動畫
 BCGenieEffect 果凍吸入的效果 和Mac裏最小化的效果同樣~~很棒~    
 iCarousel 一套相似CoverFlow的空間,很是棒,可選多樣式,可用於Mac    
 OpenFlow 相似CoverFlow的效果 挺老的工程 支持Mac    
 PaperFold-for-iOS 一套相似報紙展開的仿3D效果 用CA實現    
 MPFoldTransition 那個能左右上下Cube/Paper翻頁的效果 挺棒    
 iOS-Flip-Transform 一個Flip翻頁效果 支持上下左右翻頁 會變暗    
 AFKPageFlipper 一個Flip翻頁效果 可能性能不夠好 也不會變暗    
 DoorwayTransition 一個OpenDoor的動畫    
 Flipboard-3D-Transform-Effect-Example 如題Flip效果 沒測試    
 PaperFoldMenuController 一個Map摺紙動畫效果 通常    
 XYOrigami Map摺紙動畫~    
 PaperStack 用OpenGL實現的相似iBook的效果 可是通常    
 GCRetractableSectionController 讓TableView能按Group展開合起    
 HMGLTransitions 一個OpenGL的視圖切換 跑不起來? 好久沒更新    
 EPGLTransitionView 一個OpenGL的視圖 包括iBook效果 摺紙翻頁效果 散落效果    
 leaves 一套有些相似iBook的效果但只有橫向翻頁 被用在看書的地方    
 GC3DFlipTransitionStyleSegue 用GL實現的iBook 通常    
 KNSemiModalViewController 一個推出ModalView的動畫 後面的會縮小上移    
 letterpressexplosion UIView的撕碎爆炸效果 (CA實現)    
 FancySegue 幾個GL實現的動畫 雖然不怎麼好    
 CoreImageTransition 用CI實現的一些動畫過渡 過霧~    
  一個Image的過渡效果    
 STScratchView 刮獎的效果    
 XBPageCurl GL實現的翻頁效果~    
 ADTransitionController 不少有趣的導航視圖切換動畫    
 VCTransitionsLibrary iOS7下,一些自定義轉場動畫~ 挺棒    
 JazzHands IFTTT簡介的動畫框架,是個關鍵幀動畫框架喲~    
控件
HUD
 MBProgressHUD 一個HUD 用得很普遍 無陰影 全屏模態    
 MBProgressHUD 和MBHUD同樣 但有更新 添加了BLock iOS6    
 ATMHud 很棒的HUD 有陰影和動畫~    
 SVProgressHUD 一個HUD 樣式相似MB_HUD 有一些進度等    
 HTProgressHUD 又一個HUD    
 ETActivityIndicatorView Windows Phone 7風格風火輪    
 
下拉刷新 MJ 強烈推薦
相關文章
相關標籤/搜索