- 原文作者 : Jinkey
1 背景
英文原文:
http://ryanipete.com/blog/ios/swift/objective-c/uidebugginginformationoverlay/我寫得這個并不是翻譯而是用自己的理解重新表述這個功能,和原文內(nèi)容有出入,有能力的可以查看英文原文。
我們經(jīng)常使用各種調(diào)試工具,或者開源庫來支持懸浮窗調(diào)試信息,但蘋果的私有方法就提供了 UIDebuggingInformationOverlay 。

2 如何使用
在 AppDelegate 的 didFinishLaunchingWithOptions 方法中加入兩行代碼即可。
let overlayClass = NSClassFromString("UIDebuggingInformationOverlay") as? UIWindow.Type
_ = overlayClass?.perform(NSSelectorFromString("prepareDebuggingOverlay"))
運(yùn)行程序后,兩根手指點(diǎn)擊狀態(tài)欄即可調(diào)起這個調(diào)試的懸浮層。
3 能做什么
3.1 查看整個 window 的 View 嵌套關(guān)系
View Hierarchy
這個功能可以查看頁面層級的結(jié)構(gòu)樹,點(diǎn)擊感嘆號進(jìn)入詳情頁(點(diǎn) cell 是沒反應(yīng)的),會展示那個 view 的 frame 、 bounds 和其他一些實例變量。

3.2 查看當(dāng)前 ViewController 的屬性
VC Hierarchy
查看激活的 ViewController 的 childrenViewCotroller 的結(jié)構(gòu)樹和相關(guān)屬性:

3.3 查看 UIApplication 的成員屬性
Ivar Explorer

3.4 測量組件大小
Measure
一開始還挺懵逼不知道要怎么用,后來發(fā)現(xiàn)手指是直接在懸浮窗的外部進(jìn)行進(jìn)行拖動就可以了,如果你的組件被懸浮窗擋住了好像就沒辦法了。
選擇 Vertical ,手指在屏幕拖動即可顯示某個組件的高度;
選擇 Horizontal ,手指在屏幕拖動即可顯示某個組件的 寬度;

3.5 效果對比
Spec Compare
從相冊讀取一個圖片(你必須在info.plist 先配置相冊權(quán)限NSPhotoLibraryUsageDescription)和當(dāng)前界面對比。
點(diǎn)擊 Add -> 從相冊選擇一個界面截圖 -> 點(diǎn)擊剛添加的截圖 -> 手指在屏幕(懸浮窗外部)上下滑動 -> 即可動態(tài)改變截圖的透明度來對比截圖和當(dāng)前界面的差異 -> 雙擊退出。

我的微信公眾號 jinkey-love 歡迎交流