收藏的开源项目以及部分分析。
AVPlayer
- ZFPlayer 3566 Stars Objective-C
功能比较完善的一个视频播放及界面,但是实现较为一般。
- StreamingKit 1641 Stars Objective-C
基于流来构建音频播放,是一个思路,但可能不能满足特殊情景。
- LFLiveKit 2677 Stars Objective-C
利用GPUImage做滤镜的一个直播录制系统,功能比较完善,可以作为参考。
- TTAVPlayer 84 Stars Objective-C
比较简单的基于AVPlayerLayer的一个实现。
- CTVideoPlayerView 499 Stars Objective-C
没太大参考意义。
- EZAudio 4070 Stars Objective-C
音频的波形分析和展示,利用了accelerate,比较全面。
Cache
- YYCache 1490 Stars Objective-C
使用了LRU策略
内存缓存使用了线性链表+NSDictionary来实现,由于LRU的特性,插入永远在开始,而删除永远在结尾,所以拥有较高的性能。但是查找还是依赖于hash表来实现。
磁盘缓存使用了sqlite来保存文件缓存信息(filename, last_modify_time),所以在读写小数据的时候(20KB)会直接在sqlite中读写,而不会生成一个独立的文件。所以在小文件和未命中的情况下效率会高很多。而读写大文件时,效率会降低一些,考虑到sqlite的缓存和执行,并不会降低太多。由于sqlite对时间创建了索引,所以在缓存过期查找上面会优秀一些。这种设计解决了小文件和未命中的效率问题,但是并不能实现高并发读写文件。
- PINCache 1759 Stars Objective-C
使用了大量的Lock来处理读写,拥有异步读写接口,没有太多的特别优化。
磁盘缓存单纯使用了文件缓存,在初始化的时候就把整个目录及其元素的属性读到内存,来提高效率,但是使用的是数组存储,效率一般。
- SPTPersistentCache 1139 Stars Objective-C
利用CRC32来校验文件,据说速度较快。
他将数据信息通过memory map的方式写到了文件头部,说是为了并发读写,但这也时每次更新updateTime需要写整个文件,这样必定会导致性能降低。个人建议还是把文件信息写到另一个文件中,方便内存缓存。
- OSCache 184 Stars Objective-C
一个模仿NSCache的实现,内部使用NSDictionary。
- Haneke 1775 Stars Objective-C
他和SDWebImage非常相似,个人看来,这个的代码及其结构会比SD好一些,但是功能太有限,就像作者自己说的是一个轻量级的实现。
- SDWebImage 18607 Stars Objective-C
实现功能非常完善,是目前最好用的一个图片缓存库了。但是也有几个小问题。
图片读取全部在一个子线程中进行,在高并发读取的时候会阻塞线程,同样下载和解码也会有类似的问题。
图片的二次处理能力不够(比如手动加圆角,裁剪,滤镜),好在目前大部分工作CDN都会帮我们做掉。
预加载图片无法和正常加载使用同一套机制,预加载和正常加载如果同时触发会加载2次。
在扩展方法的时候,直接在UI组件上添加方法,这就导致了每次引入新特性的时候都需要增加一个系统类的扩展(比如UIImage),更好的方式应该是暴露一个代理对象:
1 | [view sd_setImageUrl:url]; |
- FastImageCache 7547 Stars Objective-C
该作者认为效率问题主要出现在图片从磁盘读取到内存,再进行解压,以及渲染前的内存拷贝。解决这类问题的最好方法就是进行memory map,作者也指出了这种方式会导致一张高压缩率的图片,进行内存映射后会变得很大这一非常大的缺陷。
1 | void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset); |
作者将图片按照图片size,rgba等信息进行分类,分别存储于不同的image table里面,同一个table里面会依次写入多张图片信息。但是这样会导致一个table过于庞大,而作者也没有给出非常好的过期策略以及删除部分缓存的策略。
作者将图片元信息metadata存储于另一个文件中,可惜的是使用了json序列化,导致每次更新必须全量更新,在数据量庞大的时候可能会产生性能问题吧。
这并不适用于大量图片以及图片尺寸较多的场景,但是可以用于部分频繁设置image的场景。
Component
- HubFramework 1746 Stars Objective-C
也是一款拆分CollectionView的设计,个人认为拆分的太细了,导致整个系统过于复杂,学习成本太高。
- BeeHive 2236 Stars Objective-C
将客户端的架构和服务端service结合,从而实现整个app的组件化。本身服务端和客户端在很多方面就不一样,需要更多的情景考虑。他的实现在有些场景还是不够的灵活,但是其思想可以借鉴下。
- IGListKit 6775 Stars Objective-C
事件驱动的collectionView组件化封装。具体参考IGListKit简析与DDComponent
- componentkit 4062 Stars Objective-C++
类似于React方式,使用component来布局UI。完全颠覆了传统的架构和编码方式,学习成本高。项目复杂,由objective-C++编写,利用了大量隐式转换的特性,所以不适用于swift。
Crash Report
- KSCrash 1732 Stars Objective-C
Encrypt
- MIHCrypto 272 Stars Objective-C
非常全面的加密库。
Markdown
- CocoaMarkdown 936 Stars Objective-C
- MMMarkdown 1083 Stars Objective-C
- macdown 6323 Stars Objective-C
Kit
- AppDevKit 1317 Stars Objective-C
一些扩展,用处不大。
- YYKit 10852 Stars Objective-C
包含了很多util方法,以及cache,image,text,json2model方面的类库。
- EasyIOS 824 Stars Objective-C
没有参考价值
可以将他的功能归为两类:
1, sequence,swift中自带的概念,和reactive的概念一致,是一种流式的写法。
2, 动态delegate,实现动态delegate的转换,从而实现了大量UI层的回调简化。
功能比较多,除了sequence和UI层的事件外,还有associate object、perform以及KVO(和KVOController类似)。如果是objc开发,可以考虑使用。
- Bolts-ObjC 5180 Stars Objective-C
主要提供了两个工具:
1, Task,类似于promise,以及reactive,个人觉得不如另外两者。
2, AppLink,一种多平台兼容的跳转方案,同时兼容native和web等,应用面会比MGJRouter这种广一点,但实现上不是非常的完善和通用。
- QMUI_iOS 1687 Stars Objective-C
一套非常完善的UI组件库,设计也比较精美,出自腾讯团队。本人认为他也有几个的缺点,那就是利用了大量的Runtime特性,导致很多系统方法都被hook了,这可能会带来某些隐患。由于很多方法都是在系统类上加的,所以api并不是很美观,总是有qmui_
这样的前缀。同时hook了UI层的东西,所以如果使用原生的组件也势必会带上一些QMUI的东西。
NavigationBar交互动画的修正采用的是在controller.view
上加上一个只设置了背景的navigationBar
,同时隐藏原生的navigationBar
来实现。相比于另一种使用navigationController
再套一层每个controller
,从而让每个controller
的navigationBar
相互独立,本人认为QMUI的方式更加优秀,影响面更加小,毕竟不会影响到整个controller的栈结构。
Util
- YOLOKit 628 Stars Objective-C
一个类似于reactive中sequence的工具类,建议直接使用Reactive。
- libextobjc 3682 Stars Objective-C
非常有名的几个宏定义的出处,对宏的理解和运用都非常厉害,但是平常经常使用的也就那么几个。
1 | @strongify() |
Data
- json-framework 3799 Stars Objective-C
原来的SBJson,建议使用系统方法。
- jsonmodel 6307 Stars Objective-C
JSON转model,缺点是必须继承于JSONModel基类。
- ReactiveViewModel 1727 Stars Objective-C
增加了active事件,没什么用。
- RestKit 10154 Stars Objective-C
包括了网络请求,json转model,以及到core data,如果有这些方面的需求可以尝试下。
- JSONKit 6136 Stars Objective-C
建议使用系统方法。
- Mantle 10744 Stars Objective-C
JSON转model,但是要继承于基类。
- Doppelganger 660 Stars Objective-C
一个diff工具,用于CollectionView的reload。
- Diff.swift 794 Stars Swift
也是一个CollectionView reload的diff工具。
- OrderedDictionary 253 Stars Objective-C
有序字典,意义是?
- FastCoding 883 Stars C
自动NSCoding,还不是特别通用。
- AutoCoding 969 Stars Objective-C
利用获取property来自动NSCoding。
KVO
- RZDataBinding 445 Stars Objective-C
对象绑定思想也是使用associate object,同时也hook了dealloc。但是很多地方使用了assign而不是weak。不推荐使用
他提出一个事务的概念,将众多变更一次性提交,但好像没什么太大的意义。
- KVOController 5977 Stars Objective-C
FB出品,使用associate object管理内存和负责移除KVO,非常良好的实现方式,推荐使用这个。
hook dealloc来负责移除,需要自己来保证observation的生命周期,使用上不如FB的方便。
hook dealloc来负责移除监听。
DB
- YTKKeyValueStore 1759 Stars Objective-C
利用sqlite做的一个简单的KV存储。
- YapDatabase 2919 Stars Objective-C
利用sqlite做的一个KV存储,会保存数据元信息和对象间的关系,优化了多线程读写。
- realm-cocoa 11297 Stars Objective-C
和sqlite一样,也是一种关系型数据库(这里讨论本地的realm)。
数据保存方式为内存映射,按照realm的说法是sqlite在读取保存数据时候会产生内存拷贝而影响性能。
数据按照列(column)来保存,每一列的数据格式是固定的,在查找效率上也会提升。同时列拥有不同的chunk来同步到磁盘,这样在读写的时候可以只锁定目标chunk而达到高并发读写。
数据结构实现为B+树,与sqlite使用的B树不同,B+树保证了叶子节点存储的连续性。
- CoreObject 280 Stars Objective-C
- ensembles 1536 Stars Objective-C
- MagicalRecord 10498 Stars Objective-C
- fmdb 11935 Stars Objective-C
sqlite的轻量级封装,缺少ORM,但是也非常简单,容易debug。在少量场景的情况下推荐使用。
- sequelpro 3695 Stars Objective-C
GYDataCenter 608 Stars Objective-C
sqlcipher 2505 Stars C
SQLCipher is an SQLite extension that provides 256 bit AES encryption of database files.
- wcdb 4079 Stars C
微信封装的sqlite ORM。支持多线程和数据修复,支持数据加密,用接口的方式强制格式化sql语句,功能比较强大,缺点是必须使用c++来实现其model,实现也较为复杂。如果在这方面需求量不大的情况下,没有必要迁移。
其sql拼装是字符串累加,而不是从语法树生成,所以必须依赖底层sqlite的存储方式。
- rocksdb 8645 Stars C++
基于leveldb,对齐进行了多线程以及ssd的优化。
- leveldb 10957 Stars C++
是基于Google的big data实现的一套KV存储,原理简单的说就是每次操作(增删改),都是生成一条数据,存入文件,在一定的条件下,会对这些文件进行merge操作,来保证文件的大小。这种方案解决了高并发写的问题,但是增加了读的开销,是一种折中方案。在移动端的场景下好像没有这么高的并发写场景,应该没有必要使用。
数据结构使用跳跃链表(skip list)来实现,他比B/B+数的实现简单,同时也有不错的性能。
Notes
源码分析笔记,有些地方过于详细了。
- trip-to-iOS 7187 Stars Objective-C
一些资源以及博客等整理,比较老了,偏向新手。
- ParseSourceCodeStudy 2506 Stars Objective-C
Parse的一些列分析文章。
- iOSInterviewQuestions 5883 Stars Objective-C
iOS面试题集锦
- iOSBlogCN 4391 Stars Python
iOS博客集合。
- TomatoRead 458 Stars Objective-C
iOS博客集合。
- idev-recipes 3003 Stars Objective-C
- IosHackStudy
IOS安全学习资料汇总
- The-Art-Of-Programming-By-July 11813 Stars C
- Apple-OfficialTranslation-SourceAnnotation
- Halfrost-Field 592 Stars Objective-C
Network
- AFNetworking 30057 Stars Objective-C
- NSURLProtocol-WebKitSupport
- WebViewProxy 793 Stars Objective-C
- MMLanScan 207 Stars Objective-C
网络质量检测
- DFImageManager 1220 Stars Objective-C
- Nuke 2370 Stars Swift
swift of DFImageManager
- OHHTTPStubs 3383 Stars Objective-C
- RTNetworking 1097 Stars Objective-C
- CocoaSPDY 2342 Stars Objective-C
- RealReachability 2399 Stars Objective-C
- XMNetworking 705 Stars Objective-C
- fastsocket 3466 Stars C
In-App Purchase
- CargoBay 1772 Stars Objective-C
Objc Runtime
- jrswizzle 2062 Stars Objective-C
Method swizzling
- MAZeroingWeakRef 336 Stars Objective-C
MRC时代的weak实现,可以作为参考。
- Aspects 5436 Stars Objective-C
一个比较全面的hook库,一般用于测试。
- DLIntrospection 587 Stars Objective-C
runtime方法的objc封装。
- fishhook 1999 Stars C
用来hook C方法。
- JSPatch 10076 Stars C
非常有名的利用js来动态hook的库。主要通过将:
转换为_
来实现函数签名的通用,同时格式化js代码,使.
调用变为.__c()
的方法调用。
和其他(react-native等)的思想不同,不会收集oc的方法签名,然后转到js中生成函数,使用的是修改js代码的方式,但会让debug变得困难,个人更倾向于react-native这种方式。
Socket
- CocoaAsyncSocket 9204 Stars Objective-C
Web Socket
- SocketRocket 7190 Stars Objective-C
- AZSocketIO 274 Stars Objective-C
Template
- GRMustache 1318 Stars Objective-C
- CoreParse 358 Stars Objective-C
Theme
- DKNightVersion 2809 Stars Objective-C
一种换肤框架实现,缺点也非常多,支持的属性也比较少,本人实现了一个更加简单完善的版本DDSkin
- Tweaks 4622 Stars Objective-C
Util
- NSDate-TimeAgo 1681 Stars Objective-C
NSDate的Helper类,比较简单。
- DateTools 5763 Stars Objective-C
NSDate的Helper类,比较全面。
Router
- routable-ios 1600 Stars Objective-C
HHRouter 1393 Stars Objective-C
这两个都是类似的实现,比较简单。JLRoutes
脱离UIKit,非常好用的一个实现,据说性较低,没有实际验证过。MGJRouter 1040 Stars Objective-C
蘑菇街的实现,算法经过优化的JLRoutes,实际没有验证过。CTMediator 1212 Stars Objective-C
使用中间人来解决路由系统,使用target-action方式注册行为,
Hybrid
一款模仿ios和android原生特性的h5组件库,效果来看很不错,可以使用vue和react,如果是写纯网页应用可以考虑使用这个。
- react-native 53996 Stars JavaScript
1.4k贡献者,社区非常活跃,目前最热门的方案。拥有非常完善的debug方式以及各种工具,同时React的发展也特别的好。可以完成整个app的功能,也可以作为app的一部分嵌入使用。首推。
大部分组件可以支持iOS和Android,也有很多定制化的组件,所以有些时候需要区分平台来写,也不能无缝降级h5。
- incubator-weex 5496 Stars JavaScript
和react-native竞争的产品,由阿里出品。框架会比react-native小一点,但功能也会少很多,排版是受阉割的flex,和官方所说的无缝降级h5有出入。一份代码能够同时在iOS和Android上运行,但为了统一也失去了很多的系统特性,感觉没有官方吹的那样厉害。
[PhoneGap]
cordova的商业版WebViewJavascriptBridge 9454 Stars Objective-C
webView中js与native交互的库。一种简单的实现,如果需要更复杂的实现可以使用cordova。
- ng-cordova 3629 Stars JavaScript
利用webview js和native的通信实现web端调用native方法。
原理和JSWebviewBridge类似,利用的都是iframe和messageQueue,require组件是直接在head中插入script实现,不知道在组件变多的情况下是否会影响性能,考虑到lazy load的情况,可能会好一点。
组件需要自己根据需要添加,组件比较全面,该有的都有。
但是iOS端是基于UIWebView实现的,不知什么时候能够替换成WKWebView,来提升性能。
- code-push 2993 Stars TypeScript
基于cordova和react的云端服务
- BeeFramework 3378 Stars Objective-C
利用xml来实现布局,目前已经废弃。
- samurai-native 2280 Stars HTML
利用css和html来实现布局和事件绑定,但是实现还是需要原生代码,所以不能独立的去实现一个页面的功能。
- VasSonic 5742 Stars Java
腾讯的加速web载入速度的库,原理其实就是客户端增加native缓存管理,减少获取某些静态文件的请求时间。
iOS版依赖于NSURLProtocol,是基于UIWebView实现的,不能支持WKWebView。
其中获取js运行上下文用了黑科技。
1 | [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; |
基于cordova的一款h5组件库,效果很不错,增加完善了很多native组件,使用的是Angular
也是一个UI组件库
- Tangram-iOS 758 Stars Objective-C
阿里首页的实现方式,可以认为是一种模板技术,需要客户端开发业务模板,用在业务比较稳定的场景,局限性较大,但是版本更新成本较低,维护成本低。平时设计接口的时候可以参照这种模板方式来配置。
- JASONETTE-iOS 4786 Stars Objective-C
可以认为是一种完整的DSL,功能还是挺强大的,列表使用UITableView,布局系统使用UIStackView,因此也有很大的局限性。
同时编辑JSON文件也是非常麻烦的事情,没有很好的工具可以支持。不太推荐使用,除非支持更灵活的布局和编辑。
UI
Image
- GPUImage 16408 Stars Objective-C
是目前最好用的一个GPU计算的框架。利用OpenGL来处理图片,需要对OpenGL比较熟悉,会写GLSL,熟悉图片处理才能创建自己的filter。
架构是流式结构,filter也是流的一部分,既是input也是output
当存在多个filter的时候,优化工作也比较难以进行。比如scale和rotate可以合并为transform。
由于是顺序结构的方案,所以就不能采用多线程多render buffer来优化cpu部分的性能,如下。
1 | CPU: filter1 | idle | filter2 | idle | |
animation
- Keyframes 4632 Stars JavaScript
功能类似于Lottie。
- lottie-ios 10787 Stars Objective-C
利用AE生成JSON文件来简化交互动画的编写。
- AHEasing 989 Stars Objective-C
多种时间函数实现。
- popping 5272 Stars Objective-C
依靠CADisplayLink来达到高帧率的动画效果。但是太依赖CPU,所以性能不一定比CA优秀。一般情况下感觉不太需要他来做动画。
- RBBAnimation 1945 Stars Objective-C
一种动画的封装,意义不大。
- Canvas 5233 Stars Objective-C
将动画集成到了View中,感觉没什么必要。
- YapAnimator 1697 Stars Swift
和popping原理类似,使用CADisplayLink,实时去修改视图属性。1
2
3
4
5YapAnimator(initialValue: square.frame, willBegin: { [unowned self] in
return self.square.frame
}, eachFrame: { [unowned self] (animator) in
self.square.frame = animator.current.value
})
看似比popping简单点,但是popping是模仿CoreAnimation做的,所以没有可比性。建议使用popping。
- CRAnimation 306 Stars Objective-C
一系列的动画效果。
ActionSheet & Menu
- JGActionSheet 865 Stars Objective-C
- JTSActionSheet 339 Stars Objective-C
- AHKActionSheet 1189 Stars Objective-C
- AMPopTip 1913 Stars Swift
- MMPopLabel 556 Stars Objective-C
- FTPopOverMenu 619 Stars Objective-C
- CMPopTipView 2612 Stars Objective-C
- CRToast 3942 Stars Objective-C
- GHContextMenu 520 Stars Objective-C
path style menu
- AwesomeMenu 5125 Stars Objective-C
path style menu
Animation 各种动画
- CBStoreHouseRefreshControl 3948 Stars Objective-C
- ZLSwipeableView 2620 Stars Objective-C
- YLLongTapShare 472 Stars Objective-C
- VBFJellyView 659 Stars Objective-C
- CrossNavigation 353 Stars Objective-C
不同方向的转场动画
- FastAnimationWithPOP 459 Stars Objective-C
- ICGTransitionAnimation 347 Stars Objective-C
- ZFDragableModalTransition 2290 Stars Objective-C
- ESConveyorBelt 188 Stars Objective-C
开机启动画面方案,有点像ppt的动画方案
- EAIntroView 3477 Stars Objective-C
启动引导页方案,样式比较固定
- URBMediaFocusViewController 1009 Stars Objective-C
一个图片全屏展示的方案,问题多多。
- RQShineLabel 1674 Stars Objective-C
- AMWaveTransition 2329 Stars Objective-C
- SCSiriWaveformView 830 Stars Objective-C
- AnimatedTransitionGallery 2220 Stars Objective-C
大量页面切换的动效。
- MDCSwipeToChoose 2465 Stars Objective-C
- RPSlidingMenu 893 Stars Objective-C
- BRFlabbyTable 830 Stars Objective-C
- SVGKit 2866 Stars Objective-C
web svg在iOS端的实现,挺有意思。
- KMCGeigerCounter 1864 Stars Objective-C
一个点击音效。
- POP-MCAnimate 948 Stars Objective-C
基于POP的动画扩展。
Button
- DownloadButton 1239 Stars Objective-C
- IGLDropDownMenu 1087 Stars Objective-C
可展开按钮集合
- VBFPopFlatButton 2859 Stars Objective-C
有动效。
- AYVibrantButton 1171 Stars Objective-C
- BFPaperButton 825 Stars Objective-C
- FRDLivelyButton 1317 Stars Objective-C
Calendar & DatePicker
- FSCalendar 5156 Stars Objective-C
- THCalendarDatePicker 630 Stars Objective-C
- SACalendar 228 Stars Objective-C
- MGConferenceDatePicker 391 Stars Objective-C
- FFCalendar 554 Stars Objective-C
CollectionView
- LxGridView 777 Stars Objective-C
一个模仿iOS删除app界面,一个demo。
- MGBoxKit 1855 Stars Objective-C
相当于flexbox的一个子实现,建议直接使用flex库,比如yoga。
- CSStickyHeaderFlowLayout 4771 Stars Objective-C
粘性header footer,实现不好,比较卡。
- CHTCollectionViewWaterfallLayout 3425 Stars Objective-C
一种瀑布流实现。
- RACollectionViewReorderableTripletLayout 1389 Stars Objective-C
一个排序CollectionViewLayout实现,实现比较好可以作为参考。
- MJParallaxCollectionView 1279 Stars Objective-C
图片列表,没什么参考意义。
- DZNEmptyDataSet 9249 Stars Objective-C
swizzle了reload方法来检测是否为空列表,从而来显示空状态。由于使用了黑科技,可能会对其他内容会有未知影响。
- CCFoldCell 327 Stars Objective-C
折叠动画
Color
- Chameleon 9998 Stars Objective-C
扁平化颜色集合。
- color 544 Stars Objective-C
UIColor扩展。
- Colours 2913 Stars Objective-C
一种比较漂亮的颜色集合,以及一些颜色转换方法。
UIController
- FDFullscreenPopGesture 4379 Stars Objective-C
全屏手势返回。通过KVC获取target,然后设置为第三方gesture的target,从而实现gesture替换的效果。
PKRevealController 3950 Stars Objective-C
ECSlidingViewController 4447 Stars Objective-C
Android风格侧滑抽屉
- SWRevealViewController 4295 Stars Objective-C
- BTSimpleSideMenu 406 Stars Objective-C
- RESideMenu 7037 Stars Objective-C
- CYLTabBarController 3688 Stars Objective-C
利用KVC修改系统tabbar,由于是私有api,可能不安全,不是特别建议。
- TLYShyNavBar 3373 Stars Objective-C
- AXWebViewController 220 Stars Objective-C
- VCTransitionsLibrary 4203 Stars Objective-C
多种页面切换动画。
- PYSearch 2452 Stars Objective-C
Chart
- iOS-Echarts 1306 Stars Objective-C
- YKLineChartView 611 Stars Objective-C
分时k线图
- ANDLineChartView 410 Stars Objective-C
- BEMSimpleLineGraph 2631 Stars Objective-C
- PNChart 8828 Stars Objective-C
- JSQMessagesViewController 10786 Stars Objective-C
Chat
- ChatKit-OC 1797 Stars Objective-C
- iosMath 661 Stars Objective-C
数学公式
- Atlas-iOS 3672 Stars Objective-C
- ChatSecure-iOS 2462 Stars Objective-C
- Messenger 2819 Stars Objective-C
- JBChartView 3721 Stars Objective-C
- FishChat 715 Stars Objective-C
- LLWeChat 924 Stars Objective-C
ImagePicker
- TZImagePickerController 3779 Stars Objective-C
- PYPhotoBrowser 1569 Stars Objective-C
- ZLPhotoBrowser 1239 Stars Objective-C
- MWPhotoBrowser 7740 Stars Objective-C
- RSKImageCropper 1835 Stars Objective-C
- UzysAssetsPickerController 747 Stars Objective-C
- DBCamera 1268 Stars Objective-C
- PhotoZoom
- TKImageView 261 Stars Objective-C
图片裁剪
ImageView
- FLAnimatedImage 6081 Stars Objective-C
- YLGIFImage 1676 Stars Objective-C
Layout
- iCarousel 9837 Stars Objective-C
- MyLinearLayout 2373 Stars Objective-C
- OAStackView
- SDAutoLayout 4755 Stars Objective-C
- PureLayout 6640 Stars Objective-C
- Masonry 15454 Stars Objective-C
- FDStackView 2310 Stars Objective-C
- FlexBoxLayout 134 Stars C
- yoga 8424 Stars JavaScript
- layout 1029 Stars Swift
Layout-DSL
- VKCssProtocol 64 Stars Objective-C
Keyboard
- IHKeyboardAvoiding 1002 Stars Swift
- IQKeyboardManager 9988 Stars Objective-C
- CYRKeyboardButton 333 Stars Objective-C
Map
- FBAnnotationClustering 730 Stars Objective-C
NavigationBar
- BMYScrollableNavigationBar 642 Stars Objective-C
修改NavigationBar的frame来达到和滚动行为同步,没有参考价值。
- KMNavigationBarTransition 2144 Stars Objective-C
将真正的NavigationBar的背景等转移到fake bar上,fake bar加在controller.view上,来达到这种效果。微信的实现
- RTRootNavigationController 895 Stars Objective-C
使用UINavigationController包裹一层,从而达到每个controller的NavigationBar是独立的。云音乐的实现。
- JZNavigationExtension 1194 Stars Objective-C
和KMNavigationBarTransition类似,只是并不是直接使用UINavigationBar来做fake bar,而是采用截屏+addLayer来做。
News
- TTNews 635 Stars Objective-C
一个demo性质的东西。
- bilibili-mac-client 2954 Stars Objective-C
Password
- SmileTouchID 513 Stars Objective-C
一个登录界面实现。
- VENTouchLock 983 Stars Objective-C
Touch ID和key chain共同实现验证的功能。
- LTHPasscodeViewController 593 Stars Objective-C
密码及界面
- GreatReader 542 Stars Objective-C
一个功能完善的PDF阅读器,但是有些小问题。
- Reader 3907 Stars Objective-C
一个比较完善的PDF组件,包含图片、链接。利用了CATiledLayer来分块绘制,优化性能。
同Reader,但是是基于PDFium的实现。
Progress
- MBProgressHUD 13760 Stars Objective-C
非常有名的loading。
- SVProgressHUD 10193 Stars Objective-C
非常有名的loading。
SV与MB,MB功能更加多一些,SV设计上更好一点,各有优势。
- MRProgress 2580 Stars Objective-C
多种样式loading。
- JGProgressHUD 1911 Stars Objective-C
- NJKWebViewProgress 3733 Stars Objective-C
- M13ProgressSuite 3582 Stars Objective-C
非常丰富的多样式loading以及progress。
- UAProgressView 971 Stars Objective-C
- MRCircularProgressView 113 Stars Objective-C
- ASProgressPopUpView 1124 Stars Objective-C
- ASValueTrackingSlider 1716 Stars Objective-C
- YLProgressBar 1041 Stars Objective-C
Push
- Knuff 3875 Stars Objective-C
工具:The debug application for Apple Push Notification Service (APNs).
Refresh
- MJRefresh 10994 Stars Objective-C
- INSPullToRefresh 846 Stars Objective-C
- UzysAnimatedGifPullToRefresh 1404 Stars Objective-C
- XHRefreshControl 700 Stars Objective-C
- EGOTableViewPullRefresh 3347 Stars Objective-C
ScrollView
- SDCycleScrollView 4297 Stars Objective-C
- LazyScrollView 1089 Stars Objective-C
- CustomScrollView 135 Stars Objective-C
TextView
- SlackTextViewController 7991 Stars Objective-C
- KIInPlaceEdit 124 Stars Objective-C
- ARAutocompleteTextView 259 Stars Objective-C
- HTAutocompleteTextField 1068 Stars Objective-C
- JVFloatLabeledTextField 6473 Stars Objective-C
- YetiCharacterLabelExample 361 Stars Objective-C
- AnimatedTextInput 481 Stars Swift
- ZSSRichTextEditor 2592 Stars Objective-C
- TTTAttributedLabel 7779 Stars Objective-C
- dynamiccharts 213 Stars Objective-C
- DTCoreText 5127 Stars Objective-C
TableView
- UITableView-FDTemplateLayoutCell 8118 Stars Objective-C
利用[view sizeFittingSize:UILayoutFittingCompressedSize]来计算最小高度。
- MGSwipeTableCell 5765 Stars Objective-C
左右滑动删除实现,需要继承于其cell。
- SWRevealTableViewCell 440 Stars Objective-C
左右滑动删除实现,需要继承于其cell。
- SWTableViewCell 6901 Stars Objective-C
左右滑动删除实现,需要继承于其cell。
- FXForms 3020 Stars Objective-C
利用model直接布局tableView的方案,比如登录、注册这种页面,难以定制化。
Label
- UICountingLabel 1223 Stars Objective-C
- KILabel 412 Stars Objective-C
一个比较好用的扩展UILabel富文本支持,但是也有一些bug没有修复。
Other
- timeLineiOS 616 Stars Objective-C
时间线
- DGCuteHelper 32 Stars Objective-C
粘性效果
- MotionBlur 1481 Stars Objective-C
快速移动时候的模糊效果。利用了CoreImage的自定义Filter,利用了Core Image Kernel Language
,有点像OpenGL的GLSL
。
- StackBluriOS 565 Stars Objective-C
近似高斯模糊算法
- FXBlurView 4984 Stars Objective-C
利用vImage进行模糊。
- AsyncDisplayKit
- Texture 2004 Stars Objective-C
就是AsyncDisplayKit
利用cocos2d来手指画图,达到流畅的效果。
- UberSignature 337 Stars Objective-C
一种签名实现。
- XXNibBridge 486 Stars Objective-C
一种在nib中动态load另一个nib中的内容的实现。
Debug
- FLEX 8426 Stars Objective-C
一款非常完善的内置debug工具。包含视图查看、log、查看沙盒数据等等功能。
已被删除
- CocoaLumberjack 9483 Stars Objective-C
非常有名的log工具
- BugshotKit 1369 Stars Objective-C
bug反馈,截屏功能。
- Clue 238 Stars Objective-C
在一个bug反馈前,收集用户信息,包括录制视频。
依赖FBRetainCycleDetector
来做的内存泄露分析。
- GYBootingProtection 673 Stars Objective-C
开机启动自修复,判定开机崩溃,进入修复流程。微信就有这样的功能。
- DBDebugToolkit 560 Stars Objective-C
一个比较完善的debug工具集。
- IPAPatch 2003 Stars Objective-C
不需要越狱注入其他app的工具。
- NetworkEye 1005 Stars Objective-C
利用NSURLProtocol来观察网络请求状况,是一个内置的查看工具。
- FBSimulatorControl 2078 Stars Objective-C
多模拟器选择。
- LifetimeTracker 621 Stars Swift
利用了associate object来监测对象生命周期,局限性太大。不过可能会持续更新
- FBMemoryProfiler 2757 Stars Objective-C
利用FBRetainCycleDetector
和FBAllocationTracker
做的一款工具,增加UI界面。
- FBRetainCycleDetector 2633 Stars Objective-C++
利用objc的特性,利用Object、block等的属性布局收集强引用信息。
- FBAllocationTracker 792 Stars Objective-C++
hook了+alloc
和-dealloc
来统计objc对象使用情况。
- iOS-Hierarchy-Viewer 1305 Stars C
iOS视图结构查看器,需要通过http查看,还包括core data查看。
- libimobiledevice 1602 Stars C
和设备通信的类库。
Test
- ocmock 1558 Stars Objective-C
使用NSProxy对象替代原本的对象,在response和forward中记录和处理、转发消息来实现,是非常好用的mock类库。由于完全依赖oc的动态特性,所以对swift类无效。
类似于ocmock,关注度不高。
- KIF 5049 Stars Objective-C
利用了私有方法,在非UI Unit test中进行UI测试。
- expecta 1406 Stars Objective-C
- specta 2058 Stars Objective-C
- cedar 1141 Stars Objective-C++
- Kiwi 3671 Stars Objective-C
以上几种都是BDD方式的封装。
- OCHamcrest 638 Stars Objective-C
可以认为是一些语法糖
- Nocilla 1789 Stars Objective-C
hook http请求
- Nimble 2403 Stars Swift
知名度比较高的测试断言库。
- Quick 6876 Stars Swift
知名度比较高的BDD。
React
- react-native-maps 5462 Stars Objective-C
Other
- MonkeyDev 847 Stars Objective-C
- CYLTabBarController 3688 Stars Objective-C
- detect.location 821 Stars Objective-C
- WeChatTweak-macOS 1165 Stars Objective-C
- FlatUIKit 7648 Stars Objective-C
- JLPermissions 403 Stars Objective-C
应用权限
- ZXingObjC 2497 Stars Objective-C
二维码
- SAMKeychain 4556 Stars Objective-C
- SimulateIDFA 229 Stars Objective-C
- ohana-ios 341 Stars Objective-C
通讯录
- class-dump 1727 Stars Objective-C
- DarkLightning 168 Stars Swift
雷电口传输数据
- peertalk 2042 Stars Objective-C
USB数据传输
- MMWormhole 3296 Stars Objective-C
app和extension的数据传输
- MALoggingViewController 51 Stars Objective-C
- ios-simulator-app-installer 238 Stars Objective-C
- KZPlayground Playground for Objective-C
- PunchClock 1707 Stars Objective-C
- PonyDebugger 5462 Stars Objective-C
使用Chrome来debug view
- MLPNeuralNet 917 Stars Objective-C
- GCDWebServer 3568 Stars Objective-C
- CocoaHTTPServer 4297 Stars Objective-C
- radiant-player-mac 3006 Stars Objective-C
音乐播放器for mac
- ARAnalytics 1674 Stars Objective-C
- Onboard 5774 Stars Objective-C
- electrino 2601 Stars Objective-C