UIDebuggingInformationOverlay使用介紹

前些天,Ryan Peterson 在看 UIKit 的私有頭文件時發(fā)現(xiàn)了一個之前沒看過的類: UIDebuggingInformationOverlay,并把這個發(fā)現(xiàn)分享了出來,下面來看看這個類具體的作用。

從類名可以大致知道它是用來 debug 用的。是的,UIDebuggingInformationOverlayUIWindow 的一個子類,主要是用來給開發(fā)者和設(shè)計師進(jìn)行UI調(diào)試用的(估計是Apple內(nèi)部人員使用的)。

它大概是長這樣的:


長這樣

怎么用呢?首先我們得讓它顯示出來,通過類方法 prepareDebuggingOverlay 加載下這個視圖,然后又兩種方式可以讓它顯示:

1.調(diào)用 overlay 方法,拿到實例,再調(diào)用實例方法 toggleVisibility 即可顯示。因為是私有API所以需要用運(yùn)行時的方式來執(zhí)行,代碼如下:

// Objective-C
Class overlayClass = NSClassFromString(@"UIDebuggingInformationOverlay");
[overlayClass performSelector:NSSelectorFromString(@"prepareDebuggingOverlay")];
Class overlay = [overlayClass performSelector:NSSelectorFromString(@"overlay")];
[overlay performSelector:NSSelectorFromString(@"toggleVisibility")];
// swift
let overlayClass = NSClassFromString("UIDebuggingInformationOverlay") as? UIWindow.Type
_ = overlayClass?.perform(NSSelectorFromString("prepareDebuggingOverlay"))
let overlay = overlayClass?.perform(NSSelectorFromString("overlay")).takeUnretainedValue() as? UIWindow
_ = overlay?.perform(NSSelectorFromString("toggleVisibility"))

2.執(zhí)行了prepareDebuggingOverlay方法之后,只需要通過 兩個手指同時點(diǎn)擊頂部狀態(tài)欄 即可喚醒這個浮層。

喚醒

顯示出來后,再看看具體能做什么。

View Hierarchy

顯示視圖的層級關(guān)系,點(diǎn)擊又上角的 Inspect 可以進(jìn)行App的視圖的選擇,并查看視圖的詳細(xì)信息。如果你對 App 有多個 window,可以通過 Change Current Window 進(jìn)行切換查看不同 window 的視圖層級關(guān)系及各個視圖的詳細(xì)信息。同樣的,你也可以查看系統(tǒng)的 window。比如下面查看系統(tǒng)鍵盤這個 window:

View Hierarchy

VC Hierarchy

View Hierarchy 類似,你可以查看每個 VC 的層級,并且可以查看每個 VC 上視圖的詳細(xì)信息,同時,還提供了所查看的 VC 是否 presenting 了 modal 或者是被 presented。

VC Hierarchy

Ivar Explorer

Ivar Explorer 可以讓開發(fā)者查看當(dāng)前 UIApplication 實例的變量。如下,如果變量是個對象,還可以查看對象內(nèi)部的變量,如:delegate, statusBar 等(后面即將介紹的兩個才是重頭戲)。

Ivar Explorer

Measure

從名稱上可以知道,這是測量用的。是的,有了它,你就可以直接測量當(dāng)前視圖了。操作起來也很簡單:先選擇是要測量垂直的還是測量水平的,然后手指在屏幕上移動即可測量。如下:


Measure

另外,我們發(fā)現(xiàn),有個開關(guān)寫著View Mode,打開之后,就可以測量每個組件的寬高了,如下:

View Mode for Measure

Spec Compare

這個功能更牛,更實用。設(shè)計師給你一張圖,你按著圖布局完后,想看看是否和UI圖一致,之前我都是截個圖,然后自己量。有了它,方便了多少自己體會哈。我們可以將UI圖添加進(jìn)來,然后手指向上下滑動來調(diào)節(jié)圖片的透明度(從下到上圖片透明度0~1),就可以看出哪些組件布局有問題了。
提示: 1. 添加圖片后,調(diào)試框會隱藏,雙擊屏幕即可重新顯示; 2. 由于添加圖片需要訪問圖片庫,所以需要在項目的plist文件上添加 Privacy - Photo Library Usage Description 這一項,描述內(nèi)容自定。
效果如下:

UI Compare

最后

以上,就是 UIDebuggingInformationOverlay 的基本使用,能否利用它來做更多調(diào)試的事情,就得靠自己去挖掘了。并附上Demo地址:
https://github.com/linshaolie/DebuggingOverlayDemo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容