Xcode 装逼插件:打字的震屏和火花效果
2016-01-04 10:13
218 查看
转自:http://www.cocoachina.com/ios/20151217/14668.html
Xcode 装逼插件:打字的震屏和火花效果
2015-12-17 06:18 编辑:lansekuangtu 分类:iOS开发
来源:破博客
124 16144
XCode插件
招聘信息:
iOS开发工程师
Android开发工程师
iOS软件工程师
手游JAVA 服务器端主程
cocos2dx手游客户端主程
iOS开发工程师
iOS开发(资深3人,普通若干)
iOS开发工程师
iOS讲师
iOS资深开发工程师
Cocos2d-x开发工程师
作者:才怪 授权本站转载。
最近微博上在流传一个Atom编辑器的插件:activate-power-mode,装上这个插件后打字会有震屏和火花效果,非常牛逼,效果如下:
据说有人用了,并且还是机械键盘,差点被同事打断手了。
于是我花了几天的下班时间,写了个Xcode版的插件,模仿了这个效果:
插件下载地址为:https://github.com/poboke/ActivatePowerMode,也可以在Alcatraz上搜索ActivatePowerMode进行安装。
这些功能实现起来也不难,主要是获取光标所在位置的代码颜色花了比较多时间。
我一开始以为代码高亮的颜色是由NSAttributedString控制的,但是我获取到的属性里只有字体字号等属性,没有NSForegroundColorAttributeName这个字段,所以只能用别的方法寻找。
用逆向思维思考一下,因为代码高亮是由配色方案管理的,切换配色方案时,代码颜色就会改变。而配色方案是根据单词的类型来设置颜色的,所以猜想可能存在某个方法,可以读取或设置某个范围的文字的颜色,这样才方便配色方案功能的实现。
先用关键字color在Xcode的私有类头文件里搜索,把搜到的方法名输出到一个文本里。然后再用关键字NSRange搜索,很快就发现了一个可疑的方法:- (id)colorAtCharacterIndex:(unsigned long long)arg1 effectiveRange:(struct _NSRange *)arg2 context:(id)arg3。然后再hook这个方法,果然返回了相应的颜色。
相关文章推荐
- jQuery中prop和attr的区别
- ajax 跨域访问问题
- php手册笔记-php标记
- Asp.Net 一个请求的处理流程
- lintcode: 二叉查找树中搜索区间
- 简单理解java反射机制
- hiveserver问题
- 如何判断js中的数据类型
- VMware苹果开发环境
- 分享你最喜欢的技巧和提示(Xcode,Objective-C,Swift,C...等等)
- CSS 内容生成
- QDU71 矩形
- nginx+rtmp子进程管理不当导致频繁的deleteStream(未断开连接)
- tableView的cell的复用问题
- Android 控件——利用Dialog实现底部弹出对话框
- 【[INFO] The plugin 'org.apache.maven.plugins:maven-archetype-plugin' does not exist】解决方案
- <supports-screens android:anyDensity="true" />
- StarUML及破解
- iOS中 扫描二维码/生成二维码详解
- 如何在javascript中获取请求转发后的request对象传递的数据