Xcode 装逼插件:打字的震屏和火花效果

本文介绍了一款模仿Atom编辑器插件activate-power-mode的Xcode插件,该插件可在用户输入代码时呈现震屏及火花特效。文中详细讲述了插件的开发过程及其实现原理,包括如何获取代码高亮颜色。

转自:http://www.cocoachina.com/ios/20151217/14668.html

Xcode 装逼插件:打字的震屏和火花效果

2015-12-17 06:18 编辑: lansekuangtu 分类:iOS开发 来源:破博客
124 16144

hd.jpg

作者:才怪 授权本站转载。

最近微博上在流传一个Atom编辑器的插件:activate-power-mode,装上这个插件后打字会有震屏和火花效果,非常牛逼,效果如下:

1.gif

据说有人用了,并且还是机械键盘,差点被同事打断手了。

于是我花了几天的下班时间,写了个Xcode版的插件,模仿了这个效果:

2.gif

插件下载地址为:https://github.com/poboke/ActivatePowerMode,也可以在Alcatraz上搜索ActivatePowerMode进行安装。

blob.png

这些功能实现起来也不难,主要是获取光标所在位置的代码颜色花了比较多时间。

我一开始以为代码高亮的颜色是由NSAttributedString控制的,但是我获取到的属性里只有字体字号等属性,没有NSForegroundColorAttributeName这个字段,所以只能用别的方法寻找。

用逆向思维思考一下,因为代码高亮是由配色方案管理的,切换配色方案时,代码颜色就会改变。而配色方案是根据单词的类型来设置颜色的,所以猜想可能存在某个方法,可以读取或设置某个范围的文字的颜色,这样才方便配色方案功能的实现。

先用关键字color在Xcode的私有类头文件里搜索,把搜到的方法名输出到一个文本里。然后再用关键字NSRange搜索,很快就发现了一个可疑的方法:- (id)colorAtCharacterIndex:(unsigned long long)arg1 effectiveRange:(struct _NSRange *)arg2 context:(id)arg3。然后再hook这个方法,果然返回了相应的颜色。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值