iOS開發,Reveal的使用
故事的背景是這樣的。
王二最近換了一個新老闆,產品團隊是新的,測試團隊是新的,只有他一個人乾著iOS的開發工作,前有老闆催促項目,後有測試堵截bug,好苦逼啊。。。本來,特意為產品給的設計圖會是這樣的
但實際上,產品給的設計圖是這樣的:
果然,理想很豐滿,現實很骨感。苦逼的王二同學跑去問產品:“UI元素之間的尺寸怎麼確定?”產品說:“你定吧,看著和原型圖一樣就行。”呵呵呵呵呵,這種回答和“我要做一張圖。”“什麼圖?”“使用者一看就想買的那種圖。”有什麼區別?
不過這點事情難不倒王二,很快,王二就把ui部分完成了,交給產品一看,產品看了三秒後:“哎,你這個輸入框的位置往上3個像素好不好?”“按鈕可不可以小几個像素?”。。。。。。王二按照產品的要求修改了下,又拿去給產品看,產品扒拉扒拉說了一堆像素上的事。王二崩潰了,拉著產品在旁邊,每改一步,就運行一次程式,給產品看一下效果。就這樣,改代碼——運行——顯示效果——產品扒拉扒拉——改代碼——運行——顯示效果——產品扒拉扒拉。。。。
王二瘋了。。。。。
王二給我講了他的遭遇後,我問他:你知不知道一個能即時修改ui尺寸並顯示的app?
王二:。。。。。。
好吧,我來告訴你。
這個軟體就是大名鼎鼎的Reveal,http://revealapp.com/download/
首先下載試用版的(這個軟體建議花錢買一下,物超所值啊有木有),安裝。嗯,就是這個樣子的
安裝完後,就該配置了
1、開啟命令視窗,在根目錄下建立一個.lldbinit檔案。輸入下列命令,後斷行符號
vim ~/.lldbinit
2、斷行符號後,輸入下列代碼:
command alias reveal_load_sim expr (void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2);command alias reveal_load_dev expr (void*)dlopen([(NSString*)[(NSBundle*)[NSBundle mainBundle] pathForResource:@"libReveal" ofType:@"dylib"] cStringUsingEncoding:0x4], 0x2);command alias reveal_start expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:nil];command alias reveal_stop expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStop" object:nil];
以上是四句命令,命令的意思是,給lldb設定了4個別名,這四個別名的意義是:
reveal_load_sim:模擬器載入reveal時調用的動態連結程式庫
reveal_load_dev:真機載入reveal時調用的動態連結程式庫
reveal_start:啟動reveal的調試功能
reveal_stop:關閉reveal的調試功能
在輸入完這些命令後,輸入以下命令,按一下斷行符號就儲存並退出編輯模式了
:wq
3、在工程中配置reveal連結到模擬器
開啟工程後,在appdeleget中的didfinished:方法中打下斷點,並按編輯斷點:
打完斷點後,就可以選擇模擬器運行工程了,當工程跑起來後,開啟reveal,點擊左上方的工程選擇,會看到我們的工程。
選擇我們的app的工程,就能在reveal中看到我們的ui布局了。
左邊是幹嘛的我就不說了,中間是當前頁面的ui,右邊是ui元素的相關尺寸、位置資訊。在右邊對應的框中可以修改相關數值並即時顯示。
在Xcode中也提供了這種即時查看ui的功能,但是沒法動態即時修改所以還是用reveal比較方便一點,而且,在修改了某個頁面的元素尺寸後,在模擬器上計入下一個頁面,回到reveal上之後重新連
reveal還可以在真機調試中連結真機,在編輯斷點時要修改為相應的指令。並且將reveal的動態連結程式庫一併添加進工程中:
1、點擊revel菜單的“help——》show reveal library in finder”在finder中尋找reveal的動態連結程式庫:libReveal.dylib,並將其拖入工程。
2、調整libReveal.dylib的引用方式,這裡我們只需要將libReveal.dylib檔案拷貝到Sandbox中,但是我們在引入libReveal.dylib的時候Xcode預設是以Link Binary With Libraries的方式的,實際上應該是Copy Bundle Resources,所以應該先將libReveal.dylib從Link Binary With Libraries中移除掉,然後在Copy Bundle Resources中添加。
3、修改斷點處的指令為reveal_load_dev.
reveal還可以串連破解版的蘋果裝置,來查看其他家的appUI結構,這個方法我沒有用過,大家可以去找找網上的資料。