常见的第三方库
第三方库的作用
1.分类
UI层
iOS 扁平风格 UI 库 FlatUIKit
AsyncDisplayKit是一款能够保持界面流畅性的iOS开源框架,即使是最复杂的用户界面
KMCGeigerCounterapp git老是不流畅
FlipBoard怎么播放GIF的时候这么卡
CMPopTipView —— 泡泡风格的提示界面
一个泡泡风格的提示框开源控件, 继承自UIView。iPad,iPhone通用。
MLTransition拖返可直接从中间拖返,可随意设置leftBarButtonItem,也可使用边界拖返模式
SWTableViewCell 实现了 iOS 7 的列表条目左侧滑动显示更多和删除操作的列表组件
ZLSwipeableView是一个方便做出卡片效果的UI库,支持各种卡片的滑动效
侧滑菜单ResideMenu,QQ侧滑
1、appirater
appirater是一个可以直接使用到任何iPhone应用中的开源类,用于提醒用户在打开App时,对应用进行评论或打分。
下载地址:https://github.com/arashpayan/appirater
2、FDStatusBarNotifierView
FDStatusBarNotifierView 实现了在状态栏中显示自定义提醒信息的功能。
下载地址:https://github.com/frankdilo/FDStatusBarNotifierView
3、MTStatusBarOverlay
MTStatusBarOverlay 是一个定制的 iOS状态栏,用于覆盖系统默认的状态栏。
下载地址:https://github.com/myell0w/MTStatusBarOverlay
JMTabView —— 自定义标签栏和Tabbar
JMTabView是一个iOS自定义的标签栏开源控件,界面效果完全使用Core Graphics绘制,而没有用图片,所以内容很容易改为你需要的。
SBTableAlert —— 带表格视图的消息对话框
SBTableAlert对话框中提供了一种方式,在UIAlertView视图中包含了UITableView的效果,从而可以实现在UIAlertView中进行表格多选。使用简单。
MTStatusBarOverlay —— 在状态栏上显示自定义的View
iOS程序通常会在最上面出现一个状态栏。使用这个库,可以很方便的在状态栏上显示一些信息,比如下载进度等。
url scheme iOS developer library
2.功能
PSCollectionView 是一个实现瀑布流效果的 iOS 滚动组件
iCarousel 实现3D效果实现旋转木马时的视图切换效果,支持 iPad,提供多种切换效果。
HMGLTransitions —— 视图切换动画
提供一些UIView或UIViewController切换时候的3D动画效果。比如翻转,开门,撕纸等。
闪光效果开源库shimmer的用法
IQKeyboardManager界面上的 UITextFields 和 UITextView 被弹出的键盘所挡住
TPKeyboardAvoiding 是一个下拉键盘在iOS移动文本字段的通用解决方案。 实现滚动控件,弹出键盘时,自动移动输入框位置,防止被键盘遮盖的功能
MWPhotoBrowser是一个非常不错的照片浏览器 https://github.com/mwaterfall/MWPhotoBrowser
720全景显示panoramagl
http://code.google.com/p/panoramagl/
3.网络
ASIHTTPRequest网络通信ASIHTTPRequest网络通信
这是一个经典的老库,功能完全而强大,但已经停止更新很久了(iOS5.0停止更新,但是我最近看github上这个项目有新改动)。在不同iOS版本上略微有一些小问题(提醒显示上的),所以用的时候还是稍微修改一下比较好。
AFNetworking
轻量级的通讯类库,使用非常简单。
MKNetworkKit
最近做的不错的一个通讯类库,具有AFNetworking和ASIHTTPRequest双方的优点,甚至功能更丰富一些,但是本人还没有使用过。
SocketAsyncSocket是封装了CFSocket和CFSteam的TCP/IP socket网络库
SocketRocket
SocketRocket是Square开发的一个实现webSocket的库,可以轻松的实现即时通信。
下载地址:https://github.com/square/SocketRocket
YTKNetwork 是 AFNetworking,YTKNetwork 提供了以下更高级的功能
SDWebImage库结构的简单分析
为UI控件提供网络图片加载和缓存功能,AF已经整合了此功能,一般用AF就够了,据专业人士说:SD比AF快0.02秒. 如果同时引入AF和SD, 那么AF的网络图片加载方法会被划线.
ASIHttpRequest——HTTP Network库
ASIHttpRequest库极大的简化了网络通 信,提供更先进的工具,例如文件上传工具,重定向处理工具、验证工具、等等。
skpsmtpmessage——Quick SMTP邮件发送
svn checkout http://skpsmtpmessage.googlecode.com/svn/trunk/ skpsmtpmessage-read-only
github: git clone https://github.com/kailoa/iphone-smtp.git
相关教程:http://disanji.net/2011/01/28/skpsmtpmessage-open-source-framework/
skpsmtpmessage 是由Skorpiostech, Inc.为我们带来的一个SMTP协议的开源实现,使用Objective-c 实现,iOS系统的项目可以直接调
4.动画
DACircularProgress 圆环的进度显示
MJRefresh下拉刷新,上提加载快速集成
EGOTableViewPullRefresh —— 下拉列表刷新
使用这个库,很容易就可以实现下拉刷新效果。微博,RSS阅读器之类的软件经常使用。下拉刷新代码:https://github.com/enormego/EGOTableViewPullRefresh
EasyTableView -------横向滚动的UITablView
很实用的一个改造,实现了UItableView的横向滚动。。。
EasyTableView —— 可水平或垂直滚动的TableView
原始的UITableView只可以垂直滚动。EasyTableView可以很方便的实现TableView的水平滚动, 并可重复实现用户自定义的View,就类似重复使用UITableViewCell, 这对于提高效率很有帮助。
SVProgressHUD,显示菊花
MBProgressHUD 直接在View上show ,在屏幕中间忙的“小菊花”
CorePlot——2D图形绘图仪
CorePlot有很多解决方案将你的数据可视。同时也会提供各种迷人的图形效果,比如棒状图、饼状图、线状图等等,在他们网站上也提供了大量的范例图形,很多股票价格应用,游戏分数,个人财务管理都在用。
GLGestureRecognizer ——手势识别器
封装了多种手势的识别器,例如三角形,长方形,圆形,五角星形等
5.数据库
FMDB数据库MYSQL fmdb是一个数据库管理库,封装了sqlite相关的sql语句,简化数据库操作。
下载地址:https://github.com/ccgus/fmdb
6,解析
MJExtension(转换Array/dictionary —>对象模型,主要用于JSON解析 是 JSON 和模型之间最快捷方便的转换。
数据解析
1、SBJSON
SBJson的解析速度其实是比较慢的,但是不知道为什么它却是用的最广的。
下载地址:
2、JSONKit
JSONKit解析速度上最接近iOS原生解析类,当然iOS5.0才开始支持原生解析,所以选择一个库还是很必要的。
下载地址:https://github.com/johnezang/JSONKit
3、TouchJSON
TouchJSON用的也比较广泛.
下载地址:https://github.com/TouchCode/TouchJSON
4、json-framework
没有用过。
下载地址:https://github.com/stig/json-framework
5、TBXML
TBXML是一套轻量级的DOM方式的XML解析类库,有很好的性能和低内存占用,不过它不对XML格式进行校验,不支持XPath,并且只支持解析,不支持对XML进行修改。
下载地址:https://github.com/71squared/TBXML
6、TouchXML
TouchXML这也是一套DOM方式的XML解析类库,支持XPath,不支持XML的修改。
下载地址:https://github.com/TouchCode/TouchXML
7、KissXML
KissXML这是一套基于TouchXML的XML解析类库,只不过实现了支持XML的修改。
下载地址:https://github.com/robbiehanson/KissXML
8、GDataXML
GDataXML是Google开发的DOM方式XML解析类库,支持读取和修改XML文档,支持XPath方式查询。
下载地址:
xml解析:https://github.com/schwa/TouchXML
7.其他
CocoaLumberjack,分类分级的调试
BlocksKit 是一个开源的与Cocoa紧密集合的基础性框架,BlocksKit并没有创建新的宏,函数,方法和类
Masonry是一个轻量级的封装了Autolayout框架
ZipArchive解压zip文件 2 解压密码保护的zip文件 创建zip文件 追加到zip文件 压缩文件 使用一个名字来压缩NSData
https://github.com/mattconnolly/ZipArchive
2、ssziparchive
ssziparchive与sstoolkit是同一个作者,这哥们儿简直是个天才。
https://github.com/soffes/ssziparchive
3、ZipArchive
ZipArchive同样是minizip的封装。
https://github.com/mattconnolly/ZipArchive
4、Objective-Zip
Objective-Zip将Zlib和MiniZip用Objective-C进行了封装,使用起来非常简单。
https://github.com/flyingdolphinstudio/Objective-Zip
5、zxing
zxing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、DataMatrix、UPC的1D条形码进行解码。 其提供了多种平台下的客户端。
https://github.com/zxing/zxing
6、ZBar
ZBar 是款桌面电脑用条形码/二维码扫描工具,支持摄像头及图片扫描,支持多平台包括 iPhone 手机。同时 ZBar提供了二维码扫描的 API 开发包。
https://github.com/ZBar/ZBar
7、ObjQREncoder
ObjQREncoder 是 Objective-C 的二维码的编码器,用于生成二维码图像。
https://github.com/jverkoey/ObjQREncoder
条形码扫描:
http://zbar.sourceforge.net/iphone/sdkdoc/install.html
8、OpenUDID
OpenUDID是iOS禁止使用系统UDID之后的新解决方法。
https://github.com/ylechelle/OpenUDID
9、RegexKitLite
RegexKitLite 是一个轻量级的 Objective-C 的正则表达式库,支持 Mac OS X 和 iOS,使用ICU 库开发。
https://github.com/wezm/RegexKitLite
10、STUtils
STUtils是一系列的工具集,包含了很多对于iOS原生类的扩展,当然也包含一个用于安全保存用户密码STKeyChain。
https://github.com/ldandersen/STUtils
11、scifihifi-iphone
scifihifi-iphone用于安全保存用户密码到keychain中。
https://github.com/ldandersen/scifihifi-iphone
12、sskeychain
sskeychain同scifihifi-iphone一样,不过属于轻量级。
https://github.com/soffes/sskeychain
安全保存用户密码到keychain中:https://github.com/ldandersen/scifihifi-iphone
SFHFKeychainUtils(scifihifi-iphone)—— 保存用户密码到keychain中
为了用户安全,可以使用钥匙串Keychain来保存用户密码。SFHFKeychainUtils封装了钥匙串的访问, 读写,使用起来很方便。
扫描wifi信息:
http://code.google.com/p/uwecaugmentedrealityproject/
http://code.google.com/p/iphone-wireless/
OAuth认证: http://code.google.com/p/oauth/
http://code.google.com/p/oauthconsumer/
cp/ip的通讯协议:
http://code.google.com/p/cocoaasyncsocket/
voip/sip:
http://code.google.com/p/siphon/
http://code.google.com/p/asterisk-voicemail-for-iphone/
http://code.google.com/p/voiphone/
three20
https://github.com/facebook/three20
Three20——类似于Facebook的优秀的UI库
Three20类库是Facebook自己做的,大而全是他最大的特色。把他整合到已有的项目中可能得费点周折,不过如果一开始你就用上了Three20,尤其是牵扯到很多web相关的项目的时候,你就能深刻体会到神马叫给力了。
google gdata
http://code.google.com/p/gdata-objectivec-client/
720全景显示panoramagl
http://code.google.com/p/panoramagl/
jabber client
http://code.google.com/p/ichabber/
PLBlocks
http://code.google.com/p/plblocks/
image processing
http://code.google.com/p/simple-iphone-image-processing/
json编码解码:http://code.google.com/p/json-framework
base64编码解码:http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/?r=87
异步加载图片并缓存代码:http://www.markj.net/iphone-asynchronous-table-image/
iphone TTS:https://bitbucket.org/sfoster/iphone-tts
iphone cook book 源码:https://github.com/erica/iphone-3.0-cookbook-
iphone 正则表达式:http://regexkit.sourceforge.net/RegexKitLite/
kal——iPhone日历控件
一个类似于ios系统默认日历开源日历库,支持添加事件,自定义日历样式等功能。
Facebook iOS SDK——Facebook API类库
大体来讲就是iPhone上的Facebook login,完全支持Facebook Graph API和the older REST api。
GData client——iPhone上所有Google相关服务的类库
名字就说明一切了。跟Google相关的,值得一提的是,这个项目很开放。有很多示例程序供下载。
Openear—— 语音识别和TTS
提供了语音识别和Text-to-speach 的接口
语音识别:http://www.politepix.com/openears/
Google Toolbox for Mac(GTM)—— 从不同Google项目收集的代码
包含各种的工具类。比如字符串的base64及二进制编码解码, 系统版本号比较, 路径查找等等。每个工具类都比较独立, 可单独抽出来使用。
MKStoreKit —— 程序内购买
程序内购买的流程的封装。
蓝牙协议栈:http://code.google.com/p/btstack/
zlib, openssl:http://code.google.com/p/ios-static-libraries/
地球显示信息:http://code.google.com/p/whirlyglobe/
8,第三方分享
ShareSDK支持分享到新浪微博、微信好友、微信朋友圈、QQ好友、腾迅微博、QQ空间、人人网、开心网、豆瓣、搜狐微博、网易微博、短信、邮件、打印、拷贝等。但是由于这个SDK包很大,所以用的时候一定要精简一下。下载地址:http://sharesdk.cn/Download
14、umeng
umeng既有统计分析,也有社会化组件。但是统计分析的用户数似乎明显多于其社会化组件的用户。
http://dev.umeng.com/analytics/ios/sdk-download
shareKit——分享库
相关demo:http://www.cocoachina.com/bbs/read.php?tid-71760.html
分享到开心,豆瓣,腾讯,新浪微博的api所用到的强大的分享库。
上面是总结的,不同功能的第三方库,下面由于图像有问题,就暂时没有上去
1.AsyncDisplayKit
2.作用AsyncDisplayKit是一款能够保持界面流畅性的iOS开源框架,即使是最复杂的用户界面,也可以让其流畅运行并快速响应。 AsyncDisplayKit不止是Paper的组成部分,与Facebook神奇的动画引擎Pop也是关系密切。
3.效果
用法:http://www.oschina.net/p/asyncdisplaykit
2.IOS 字典模型互转框架 MJExtension(转换Array/dictionary —>对象模型,主要用于JSON解析)
参考:https://github.com/CoderMJLee/MJExtension
作用,模块的转换
3.BlocksKit http://www.th7.cn/Program/IOS/201507/512932.shtml http://www.myexception.cn/mobile/1907133.html
BlocksKit 是一个开源的与Cocoa紧密集合的基础性框架,BlocksKit并没有创建新的宏,函数,方法和类,只是对Cocoa类的一个扩展,是一个blocks的大杂碎,也是Zachary Waldowski集思广益精炼得来的,说白了它就是利用blocks的优势,给Cocoa类增加了一系列实用方法, 比如让NSObject执行blocks,用blocks对UIView增加触摸动作。
就是用target action forControlEvents 用block 代替
4.CocoaAsyncSocket
AsyncSocket是封装了CFSocket和CFSteam的TCP/IP socket网络库。它提供了异步操作,本地cocoa类的基于delegate的完整支持。主要有以下特性:
• 队列的非阻塞的读和写,而且可选超时。你可以调用它读取和写入,它会当完成后告知你
• 自动的socket接收。如果你调用它接收连接,它将为每个连接启动新的实例,当然,也可以立即关闭这些连接
• 委托(delegate)支持。错误、连接、接收、完整的读取、完整的写入、进度以及断开连接,都可以通过委托模式调用
• 基于run loop的,而不是线程的。虽然可以在主线程或者工作线程中使用它,但你不需要这样做。它异步的调用委托方法,使用NSRunLoop。委托方法包括 socket的参数,可让你在多个实例中区分
• 自包含在一个类中。你无需操作流或者socket,这个类帮你做了全部
• 支持基于IPV4和IPV6的TCP流
5.CocoaLumberjack
• 可以设定 Log 等级
• 可以积攒到一定量的 log 后,一次性发送给服务器,绝对不能打一个 Log 就发一次
• 可以一定时间后,将未发送的 log 发送到服务器
• 可以在 App 切入后台时将未发送的 log 发送到服务器
怎么用http://www.cnblogs.com/liufan9/p/3552832.html
6.DACircularProgress 圆环的进度显示
http://www.oschina.net/p/dacircularprogress
7.
设计扁平化的UI是如此的简单,主要的原理是通过设置一系列的属性来够着背景图或者背景色,然后更新到UI控件上。看来随心所欲的设计自己喜欢的扁平化风格也不是难事。
iOS 扁平风格 UI 库 FlatUIKit
8.FMDB数据库MYSQL
使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码
对比苹果自带的Core Data框架,更加轻量级和灵活
提供了多线程安全的数据库操作方法,有效地防止数据混乱
https://github.com/ccgus/fmdb
http://www.cnblogs.com/wendingding/p/3871848.html
9.YTKNetwork 是什么
https://github.com/yuantiku/YTKNetwork
YTKNetwork 是猿题库 iOS 研发团队基于 AFNetworking 封装的 iOS 网络库,其实现了一套 High Level 的 API,提供了更高层次的网络访问抽象。YTKNetwork 现在同时被使用在猿题库公司的所有产品的 iOS 端,包括:猿题库、 小猿搜题、 猿辅导 、 粉笔直播课 。
相比 AFNetworking,YTKNetwork 提供了以下更高级的功能:
• 支持按时间缓存网络请求内容
• 支持按版本号缓存网络请求内容
• 支持统一设置服务器和 CDN 的地址
• 支持检查返回 JSON 内容的合法性
• 支持文件的断点续传
• 支持 block 和 delegate 两种模式的回调方式
• 支持批量的网络请求发送,并统一设置它们的回调(实现在YTKBatchRequest类中)
• 支持方便地设置有相互依赖的网络请求的发送,例如:发送请求A,根据请求A的结果,选择性的发送请求B和C,再根据B和C的结果,选择性的发送请求D。(实现在YTKChainRequest类中)
• 支持网络请求 URL 的 filter,可以统一为网络请求加上一些参数,或者修改一些路径。
• 定义了一套插件机制,可以很方便地为 YTKNetwork 增加功能。猿题库官方现在提供了一个插件,可以在某些网络请求发起时,在界面上显示"正在加载"的 HUD。
10Masonry
http://www.tuicool.com/articles/QraIru
Masonry是一个轻量级的封装了Autolayout框架
https://github.com/Masonry/Masonry
github页面上给出了使用Masonry和Autolayout实现同样效果代码量的对比
当然了你如果学习了VFL,代码量也不会很多
12.MJExtension 是 JSON 和模型之间最快捷方便的转换。
13下拉刷新,上提加载快速集成
/MJRefresh
添加上拉刷新https://github.com/samvermette/SVPullToRefresh
14
MLTransition
拖返可直接从中间拖返,可随意设置leftBarButtonItem,也可使用边界拖返模式。(非截图实现,拖返过程中显示的view都是活动的),自定义左上角返回控件,导致手势的左返回失效问题
15MWPhotoBrowser是一个非常不错的照片浏览器,
https://github.com/mwaterfall/MWPhotoBrowser.git
MWPhotoBrowser来加载小图1M以下的都应该不会有内存警告的问题。如果遇到大图,3M、4M、5M的大图,很有可能导致内存警告。最近我就遇到这个问题,很是头疼。来回滑动查看照片内存飙到100M以上:http://www.wtoutiao.com/a/1402505.html
16侧滑菜单ResideMenu
http://blog.csdn.net/manoel/article/details/39013095/
http://www.jianshu.com/p/99e8b3f6f377
17SDWebImage库结构的简单分析
主要用到的对象:
1、UIImageView (WebCache)类别,入口封装,实现读取图片完成后的回调
2、SDWebImageManager,对图片进行管理的中转站,记录那些图片正在读取。
向下层读取Cache(调用SDImageCache),或者向网络读取对象(调用SDWebImageDownloader) 。
实现SDImageCache和SDWebImageDownloader的回调。
3、SDImageCache,根据URL的MD5摘要对图片进行存储和读取(实现存在内存中或者存在硬盘上两种实现)
实现图片和内存清理工作。
4、SDWebImageDownloader,根据URL向网络读取数据(实现部分读取和全部读取后再通知回调两种方式)
其他类:
SDWebImageDecoder,异步对图像进行了一次解压……
目前不明白为什么要做这么道工序。(现在清楚了,功能解释见下文)
http://www.cnblogs.com/biosli/archive/2012/07/21/2602624.html
18闪光效果开源库shimmer的用法
http://code.google.com/p/cocoaasyncsocket/
19
SVProgressHUD
实现多种HUD效果。多用于程序正在执行耗时较长命令,需要用户等待。除了显示等待的HUD,还可以显示命令执行成功或者失败的HUD。 [Code4App.com]
11MBProgressHUD
//方式1.直接在View上show ,在屏幕中间忙的“小菊花”
1 /常用的设置
2 //小矩形的背景色
3 http://my.oschina.net/jilin/blog/393005
20SWTableViewCell
SWTableViewCell 实现了 iOS 7 的列表条目左侧滑动显示更多和删除操作的列表组件。
21TPKeyboardAvoiding
TPKeyboardAvoiding 是一个下拉键盘在iOS移动文本字段的通用解决方案。 实现滚动控件,弹出键盘时,自动移动输入框位置,防止被键盘遮盖的功能
IQKeyboardManager
我们在开发应用的时候经常碰到这样一种情况,界面上的 UITextFields 和 UITextView 被弹出的键盘所挡住。
http://www.oschina.net/p/iqkeyboardmanager
22 PSCollectionView-master
PSCollectionView 是一个实现瀑布流效果的 iOS 滚动组件。
23 iCarousel 实现3D效果
https://github.com/nicklockwood/iCarousel
24、帧速计算功能--KMCGeigerCounter
为什么我的app老是不流畅,到底哪里出了问题?
。掉帧通常是不可见的,但是很难区分55fps和60fps之间的不同,而KMCGeigerCounter可以让你观测到掉落5帧的情况
https://github.com/kconner/KMCGeigerCounter
25FlipBoard怎么播放GIF的时候这么卡,
FlipBoard出品的太适合你了:https://github.com/Flipboard/FLAnimatedImage
ZLSwipeableView是一个方便做出卡片效果的UI库,支持各种卡片的滑动效
https://github.com/zhxnlai/ZLSwipeableView
果。