什么是UIDebuggingInformationOverlay

UIDebuggingInformationOverlay是由苹果创建的私有子类,大概是帮助开发人员和设计师调试苹果自己的iOS应用程序。

启用后,窗口会浮动在应用的内容上,如下所示

image

如何开启UIDebuggingInformationOverlay

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    // Override point for customization after application launch.

    Class overlayClass = NSClassFromString(@"UIDebuggingInformationOverlay");
    [[overlayClass class] performSelector:@selector(prepareDebuggingOverlay)];

    return YES;
}

开启后使用两根手指点击状态栏来调出调试面板。
PS:该类是私有类,因此可能将无法通过App Store审核。

UIDebuggingInformationOverlay可以做什么

从屏幕截图可以看出,覆盖层提供了六个功能。本文将对前五个进行介绍。

一、View Hierarchy
这个选项可以向你展示当前选择的窗口的视图列表。可通过点击cell右侧的感叹号查看详情。包括视图的frame和成员变量等。
image
image

二、VC Hierarchy
通过这个可以大致看到ViewController层次结构。它与“View Hierarchy”非常相似,只是它显示了活动视图控制器的层次结构。从这里,你可以检查任何视图控制器的详情,包括其视图。
image

三、Ivar Explorer
这个特性允许你查看UIApplication对象的成员变量。更重要的是,任何一个对象的变量都是可以被查看的。
这包括app delegate,根据你的应用程序的结构,可能会提供一个很好的切入点,允许你进入自定义的对象里。
image

四、Measure
在我看来,这是一个比较酷的特性。它允许你以pt这个精度去测量屏幕内各个元素的尺寸。首先,选择你想查看水平还是竖直的轴线。然后手指拖动屏幕,使用控制台内的放大器来帮助你。有两种模式:

默认的模式忽略了视图边界。据我所知,这种模式将屏幕作为一个点阵图片,并通过颜色的变化作为潜在的测量边界。例如,在下面的屏幕截图中,我能够测量一个textfield的文字的边界和屏幕边界的距离:
image

“View Mode”则是另外一种处理方式。它清晰的展示了每一个子视图的尺寸。拖动你的手指到要查看的视图上,可以查看它在你选择的轴线上的范围。在下面的屏幕截图里,我测量了顶部输入框的高度。
image

五、Spec Compare
我认为这个工具在开发者与设计师之间提供了极大的便利。添加一个屏幕截图到你的设备里然后通过Spec Compare选择它,被选择的这张屏幕截图会展示在当前app的顶部。你可以在屏幕上拖动来调整透明度,以此来对比设计和你app中的实现具体的不同。

PS:iOS10系统记得添加相册访问权限NSPhotoLibraryUsageDescription,否则将会crash。

image
image

Demo

QWDebuggingInformationOverlay

本文是基于下述原文进行了机器翻译并有增改,侵删!

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

图片素材来自
简书:郭大猿http://www.jianshu.com/p/0efafc9cdd7f