• 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 强烈推荐
     
     
     
  • 相关阅读:
    图标线性回归移动到指定的位置
    jquery实现图片裁剪
    使用php输出时间格式
    《这些年,我们读过的技术经典图书》主题有奖征文
    JSON数据格式
    设计模式-命令模式
    windows vc6 release 调试
    hdu4530小Q系列故事——大笨钟
    设计模式-建造者模式
    设计模式-外观模式
  • 原文地址:https://www.cnblogs.com/wangxiaorui/p/5039657.html
Copyright © 2020-2023  润新知