源码推荐(9.25):模仿iOS8邮箱cell删除动效及滑动右侧菜单按钮效果的开源库,1:1高仿微信

lansekuangtu· 2015-09-25

模仿iOS8中的邮箱里面的cell删除动效以及滑动右侧菜单按钮效果的开源库(作者:江南的悲伤)

由于iOS 8 提供了- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath 这个API,因此例如微信和QQ的滑动菜单都是用系统自带的效果实现的,这个实现出来的效果和邮箱的有一些不一样,除了按钮在出现的动画上的区别,还有删除的交互和动效。我也比较欣赏苹果自己设计的这套交互,使用起来十分的爽,因此尝试着模仿实现了一下。

测试环境:Xcode 6.2,iOS 6.0 以上

模仿iOS8中的邮箱里面的cell删除动效以及滑动右侧菜单按钮效果的开源库

1:1高仿微信(作者:你看这名拉风不)

1:1高仿微信,喜欢的请star一下吧。感激提出批评和意见的大大!

高仿微信

新人 Swift 开发第一弹(v2ex客户端)(作者:ellipse42)

Python程序猿 iOS开发第一弹 (又一个选择v2ex开刀的),其中有用到SnapKit  Alamofire  SwiftyJSON

欢迎大家下载试用~~,有bug或者程序不合理的地方也希望多多指出

测试环境:Xcode 6.2,iOS 7.0 以上

新人 Swift 开发第一弹(v2ex客户端)

RunTrace(一个可以实时跟踪分析iOS App视图的小工具)(作者:loveskyforever)

一个可以实时跟踪分析iOS App视图的小工具

前言

作为ios的开发者,常常为了UI界面搞得头破血流,你是不是经常遇到这样的痛点:这个view是从哪里来的,它的父视图是什么,它的子视图有哪些,它的frame会发生什么样的变化,它怎么突然隐藏了,它什么时候会被释放掉,对于像自动布局,错误常常如潮水般的涌来,我想动态获取一个view的约束怎么办,我想知道这个view此时此刻和其他哪些view产生了怎样的约束,如何才能直观的表现出这个view的约束呢等等各种各样的问题,为了几个view的正常显示常常加班加点,痛苦不堪。同是身为ios开发者的我,深有同感。所以,我编写了此款小工具,作为app内嵌使用,完全解耦,安全方便无副作用,希望大家喜欢。

安装

安装十分简单,将RunTrace目录下的RunTrace.h,RunTraceHelp.xib,libRunTraceLib.a三个文件移动到你的工程下,或者直接将文件夹拷贝过去即可,如果工程的Build Setting的Other Linker Flags没有添加-ObjC,则添加上。至此无需写一行代码,运行你的app,在界面的右上角,一个可爱的写着T的浅绿色圆形按钮便出现。

禁用

因为这个工具是给开发者调试用的,所以正式发布的时候肯定是需要禁用的,禁用不需要移除文件,在RunTrace.h里将RunTraceOpen宏的值改为0即可。

使用

获取view的基本信息

将圆形按钮拖到你想获取信息的view上即可,它可以获取你想要的任何view,无论是tabitem上的,还是navigationitem上,甚至uiwindow上的,你都可以获取到。

获取view的父视图和子视图

想看看这个view的父视图或者子视图有哪些,将圆形按钮拖到你想获取信息的view上,点击顶部的信息栏,便会弹出一个窗口,这个窗口上列举出了这个view的父视图(按照以此往上的顺序)和子视图(按照由内向外的顺序),点击一下便会在页面上高亮显示(如果该父视图或者子视图是自动布局,便会跳转到自动布局列表),还有当前的视图是否是自动布局,以及信息栏是置顶显示还是置底显示,最后还有一个支持按钮,感觉不错可以赞助一下:)

显示自动布局信息

获取你想要的view,在弹出窗口里,如果该view是自动布局,便会有detail按钮,点击按钮,显示自动布局列表,点击列表,相应的约束在页面上高亮显示,同理在view的父视图和子视图列表,你同样可以点击列表显示该视图的自动布局,是不是爽歪歪啊~

追踪view的状态

很多时候,我们实时跟踪一个view的状态和属性,比如它的frame的变化,它的center的变化,它的superview的改变,它的subview的改变,它的contentSize的改变等等变化,现在一个按钮即可实现你想要的。点击弹出窗口上的Trace按钮,即可追踪该view的状态,view的更新信息全部都在log列表里,当你点击stop的时候,便回到了原先的弹出窗口。同理在view的父视图和子视图列表,你左划列表,点击Trace按钮,同样可以实现对父视图和子视图的追踪。

监测内存泄露

没有听错吧,它可以监测内存泄露,是的,那么如何来做呢,你push进一个viewController的时候,随便追踪一个view的状态,然后pop回来,如果内存正常会弹出RemoveFromSuperview的提示框,如果没有弹出,说明那个viewController发生了内存泄露。

原理

说完了大致运用,我们来简单说说原理,原理就是首先Method Swizzling修改很多方法的入口,加入我们想要的东西,比如那个圆形小按钮,然后通过view的hittest来获取我们想要的view,对view的相关属性kvo便可以跟踪它的一些状态啦。其实原理并不难,但是细节很麻烦,尤其是在写自动布局约束展现的时候需要判断的东西很多。另外大家在使用的时候可以放心,对于app原生界面上的view我都使用了weak引用,不会影响到你的代码。

测试环境:Xcode 6.2,iOS 6.0 以上

RunTrace(一个可以实时跟踪分析iOS App视图的小工具)

分段选择控件(作者:xulongios)

该控件一般和UIScrollView一起使用,可根据滑动的距离来实时更新底部线条的位置和宽度, 宽度是根据每个分割的控件title计算的宽度而定。点击控件通过代理回调给UIScrollView来 改变ContentOffset来达到控制页数的效果,

滑动实时改变字体大小和下滑条的宽度、位置。

测试环境:Xcode 6.2,iOS 7.0 以上

分段选择控件