Hi,SwiftGG 翻译组启用了新的域名:swiftgg.team今后翻译组的各项活动将会在新域名下开展,不要错过哦!

1 背景

英文原文:
http://ryanipete.com/blog/ios/swift/objective-c/uidebugginginformationoverlay/

我写得这个并不是翻译而是用自己的理解重新表述这个功能,和原文内容有出入,有能力的可以查看英文原文。

我们经常使用各种调试工具,或者开源库来支持悬浮窗调试信息,但苹果的私有方法就提供了 UIDebuggingInformationOverlay

2 如何使用

AppDelegatedidFinishLaunchingWithOptions 方法中加入两行代码即可。

let overlayClass = NSClassFromString("UIDebuggingInformationOverlay") as? UIWindow.Type
_ = overlayClass?.perform(NSSelectorFromString("prepareDebuggingOverlay"))

运行程序后,两根手指点击状态栏即可调起这个调试的悬浮层。

3 能做什么

3.1 查看整个 windowView 嵌套关系

View Hierarchy

这个功能可以查看页面层级的结构树,点击感叹号进入详情页(点 cell 是没反应的),会展示那个 viewframebounds 和其他一些实例变量。

3.2 查看当前 ViewController 的属性

VC Hierarchy

查看激活的 ViewControllerchildrenViewCotroller 的结构树和相关属性:

3.3 查看 UIApplication 的成员属性

Ivar Explorer

3.4 测量组件大小

Measure

一开始还挺懵逼不知道要怎么用,后来发现手指是直接在悬浮窗的外部进行进行拖动就可以了,如果你的组件被悬浮窗挡住了好像就没办法了。

选择 Vertical ,手指在屏幕拖动即可显示某个组件的高度;

选择 Horizontal ,手指在屏幕拖动即可显示某个组件的 宽度;

3.5 效果对比

Spec Compare

从相册读取一个图片(你必须在info.plist 先配置相册权限NSPhotoLibraryUsageDescription)和当前界面对比。

点击 Add -> 从相册选择一个界面截图 -> 点击刚添加的截图 -> 手指在屏幕(悬浮窗外部)上下滑动 -> 即可动态改变截图的透明度来对比截图和当前界面的差异 -> 双击退出。

我的微信公众号 jinkey-love 欢迎交流

文章目录
  1. 1. 1 背景
  2. 2. 2 如何使用
  3. 3. 3 能做什么
    1. 3.1. 3.1 查看整个 window 的 View 嵌套关系
    2. 3.2. 3.2 查看当前 ViewController 的属性
    3. 3.3. 3.3 查看 UIApplication 的成员属性
    4. 3.4. 3.4 测量组件大小
    5. 3.5. 3.5 效果对比