iOS 開發(fā)過程中,調(diào)試 UI,因為官方開發(fā)環(huán)境不足,一般都是配合 Reveal這種工具,來調(diào)試修改,后來蘋果推出 Swift 的時候,引入了 Playground,Xcode 中也增加了 UIView Debug,這樣一來就簡化了 View 層的調(diào)試難度。然而因為兩者各自有問題:
Playground:
- 不是在完整的應(yīng)用執(zhí)行環(huán)境中執(zhí)行的
- 設(shè)置 View 屬性不夠靈活,只能通過 Playground 中的代碼來執(zhí)行
Reveal:
- 能設(shè)置的屬性有限
- 能設(shè)置控件的屬性有限
此外這兩種方式都沒有交互執(zhí)行代碼的能力。一般解釋執(zhí)行的語言都帶這個福利,一邊調(diào)試一邊寫代碼,效率飆升。Swift 中帶一個環(huán)境,然而也不是完整的環(huán)境。
是時候讓 RubyMotion 出場了。這個項目好幾年了,目標(biāo)是拿 Ruby 來寫移動端的項目,聽起來很 Cool,然而因為各種原因,最終沒發(fā)展起來,我感覺以后也夠嗆,有些狗注定單身,有些項目注定小眾。項目的作者也是 MacRuby 的作者,有興趣自己了解,不贅述。
RubyMotion 的思路是用 Ruby 代碼根據(jù)一定規(guī)范,去調(diào)用各個平臺的接口,然后它從中間做一些兼容和轉(zhuǎn)換,因為有完整的兼容層和解釋器,所以拿來做 iOS 環(huán)境的解釋器十分合適。
首先來注冊個免費賬戶:
http://www.rubymotion.com/cn/download/starter/

然后會給你郵箱發(fā)個 Key,和下載地址。安裝的時候輸入那個 Key 就能繼續(xù)了。
我曾經(jīng)滿心歡喜花 199 刀買了一個收費版(當(dāng)時還沒有免費版),一年多后才用 RubyMotion 把這個錢給掙回來……
安裝完畢后在終端下執(zhí)行 motion create testApp:

這樣就創(chuàng)建了一個 iOS 工程。進(jìn)去執(zhí)行 Rake:

然后一片空白:

很好,執(zhí)行起來了?,F(xiàn)在你已經(jīng)得到一個完整的交互式 iOS 執(zhí)行環(huán)境了。

還支持 tab 鍵列出方法名。
切換到模擬器界面,然后按 cmd 鍵在空白的地方,會發(fā)現(xiàn)出現(xiàn)一個紅線,點一下然后切換到終端:

可以看到終端的標(biāo)簽變成了這個 View,你已經(jīng)進(jìn)入了這個 View 的內(nèi)部了。調(diào)整個背景色看看:


添加個子視圖:


這樣已經(jīng)能用了,然而命令還是有些繁瑣,在 Ruby 社區(qū)里,大家都想法兒少寫代碼。我們引入 SugarCube 這個項目。在 Gemfile 中增加:
source 'https://rubygems.org'
gem 'rake'
# Add your dependencies here:
gem 'sugarcube', :require => [
'sugarcube',
'sugarcube-repl',
'sugarcube-factories',
'sugarcube-ui',
'sugarcube-color',
'sugarcube-foundation',
'sugarcube-constants',
'sugarcube-timer',
'sugarcube-notifications',
'sugarcube-nsuserdefaults',
'sugarcube-gestures',
'sugarcube-nsdata'
]
這下就好寫多了。
這個項目還對 REPL 增加了各種優(yōu)化,比如查找當(dāng)前應(yīng)用的所有 Controller,當(dāng)前的視圖,等便利的操作。詳情參考文檔

這時這個調(diào)試環(huán)境就很具可用性了。
我開發(fā)維護(hù)過幾個 RubyMotion 的項目,并不是很推薦使用 RubyMotion 作為移動端開發(fā),原因這個社區(qū)的老哥已經(jīng)說的很清楚了:Why I stopped using RubyMotion,不過拿來當(dāng)一個輔助工具使用,還是極好的。