[Jinkey 原创]震惊!iOS 系统居然自带悬浮窗口调试工具

  • 原文链接 : 震惊!iOS 系统居然自带悬浮窗口调试工具 —— Jinkey 原创

  • 原文作者 : Jinkey

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 欢迎交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

盲人编程_盲人如何编码

盲人编程About one out of every 200 software developers is blind. We know this because Stack Overflow asked 64,000 developers about this a few months ago.每200名软件开发人员中大约有1名是盲人。 我们之所以知道这一点,是因为几个月前 Stack Overflow 向…

hadoop环境搭建笔记

一、配置Linux (1)cat /etc/networks (2)cat /etc/sysconfig/network (3)vi /etc/udev/rules.d/70-persistent-net.rules eth1 改为eth0 (4)vi /etc/sysconfig/network-scripts/ifc…

边分治讲解

前言: 边分治和点分治一样属于树分治的一部分,相比于点分治,边分治对于与度数相关的问题有着很大的优势,同时边分治也是解决树上最优化问题的一种重要的算法。 分治过程: 边分治的分治过程与点分治类似,同样…

准确性 敏感性 特异性_如何掌握类型特异性的艺术

准确性 敏感性 特异性Do more specific definitions result in less flexibility?更具体的定义会导致灵活性降低吗? In this post I will try to avoid the debate about strong/static vs. weak/dynamic types (what more could possibly be said?), or even sc…

Pycharm社区版配置Django

Pycharm开发版(收费)自带Django模板,社区版(免费)需要通过命令行创建Django项目。 通过pip安装Django:pip install django2.0.2(版本号),可通过以下命令检查是否安装成功 在命令行下创建Django项目(项目存放在D:\PyCharm) 1.创建项目 进入D:\…

家里也是不知不觉就电脑有不能开启了

一如既往的把电脑搬上去,我推测就是因为内存条金手指的接触不好了,然后多次的强制关机让我心疼,还有是花了30元装系统还是有些不服气,最后还是要回去弄好。 转载于:https://www.cnblogs.com/bkchengzheng/p/5662222.html

oracle model 分组,【已解决】关于Oracle分组函数高级用法(按照N条分组并生成唯一号)...

prompt PL/SQL Developer import fileprompt Created on 2018年3月30日 byset feedback offset define offprompt Creating T_TEST_GROUP...create table T_TEST_GROUP(code VARCHAR2(100),supplier VARCHAR2(100),item_id VARCHAR2(100),num NUMBER,lot VARCHA…

用Mesos分布式架构进行工作

引言:2010年,一个旨在解决扩容问题的项目诞生——Apache Mesos,它在某种程度上对CPU、内存、磁盘资源进行抽象,从而允许整个数据中心如同单台大服务器般运转。无需虚拟机和操作系统,Mesos创造了一个单独底层的集群为应…

angular和react_如何在Angular中验证默认和自定义React形式

angular和reactby Luuk GruijsLuuk Gruijs着 如何在Angular中验证默认和自定义React形式 (How to validate default and custom reactive forms in Angular) When presenting forms to your users, it’s considered very user-friendly to give them immediate feedback on w…

POJ 1502 MPI Maelstrom 最短路

最短路模板。 题意:从‘1’点发出一个信号到各个点,不同的点可以同时发出一个信号但到达目标的时间不同,问所有点接受到信号所耗费的最短时间为多少。 思路:迪杰斯特拉求出1点到各个点的最短路,遍历一遍找到其中的最大…

调试dump文件

调试dump文件 1、设置好pdb文件和源代码路径 为了能正确分析Dump文件,我们必须要指定和程序一起出来的PDB文件,如果程序重新被编译了一次,即使代码没有任何变化,之前的PDB文件我们不能再继续使用。posted on 2018-12-28 17:50 mao…

不一样的视角,程序员世界里的环保

摘要: 我们身边有很多可以做的技术环保工作。比如说,在Linux下少用root用户,SQL的时候,delete前先select,这样,你就不会做出一些让你后悔的事。不会让你重头来过,从而至少不会浪费电能。写代码的…

oracle查出连续5行,Oracle期末考试复习题2

复习题一、填空题:1. Oracle EnterpriseManager是一个基于 B/S的框架系统。2.Oracle数据库的存储结构分为物理结构和逻辑结构。3.在游标或者游标变量打开后还没有进行第一次提取时,%found属性为null。4. 在oracle中已c…

selinux会阻碍挂载嘛_为什么追求完美可能会阻碍您成为新手Web开发人员

selinux会阻碍挂载嘛by Rick West由里克韦斯特(Rick West) 为什么追求完美可能会阻碍您成为新手Web开发人员 (Why striving for perfection might be holding you back as a newbie web developer) I am a perfectionist. Or, at least, I like to think I am. Either way, I’…

MySQL优化的一些基础

在Apache, PHP, mysql的体系架构中,MySQL对于性能的影响最大,也是关键的核心部分。对于Discuz!论坛程序也是如此,MySQL的设置是否合理优化,直接 影响到论坛的速度和承载量!同时,MySQL也是优化难度最大的一个…

oracle 会话 lock,相克军_Oracle体系_随堂笔记014-锁 latch,lock

1、Oracle锁类型锁的作用latch锁:chain,链LOCK锁排他锁(X)共享锁(S)2、行级锁:DML语句事务锁TX锁的结构事务锁的加锁和解锁过程只有排他锁不影响读(CR块)3、表级锁:TM行级排他锁(Row exclusive)RX锁当我们进行DML时,会…

电线之间:采访Microsoft Edge性能PM Nolan Lawson

by Vivian Cromwell通过维维安克伦威尔(Vivian Cromwell) 电线之间:采访Microsoft Edge性能PM Nolan Lawson (Between the Wires: An interview with Microsoft Edge performance PM Nolan Lawson) I interviewed Nolan Lawson, Web Performance PM at Microsoft E…

swift菜鸟入门视频教程-09-类和结构体

本人自己录制的swift菜鸟入门,欢迎大家拍砖,有什么问题能够在这里留言。主要内容:类和结构体对照 结构体和枚举是值类型 类是引用类型 类和结构体的选择 集合(collection)类型的赋值与复制行为视频地址:百度…

oracle的集合操作符,[Oracle] Oracle的集合操作符

Oracle的集合操作包括: union , intersect , minus.[例子]假设有两个表a,b如下:SQL> select * from a;COLA----------123SQL> select * from b;COLB----------345union : 得到两个结果集的并集(不含重复值)SQL> select * from a2 union3 select * from b;COLA------…

锁大全与 GDB调试

1.innodb_lock_monitor:打开锁信息的方式 mysql> create table innodb_lock_monitor(id int) engineInnoDB; Query OK, 0 rows affected, 1 warning (2.29 sec) mysql> begin work; Query OK, 0 rows affected (0.00 sec) mysql> update t set val val 1…