iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)

时间:2024-03-07 07:46:10

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 强烈推荐