Xcode 裝逼插件 ActivatePowerMode
最近微博上在流傳一個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這個方法,果然返回了相應的顏色。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!