Lookin高效调试iOS App的UI

Lookin是一款iOS开发时常用的调试软件,由腾讯微信读书团队QMUI开发。

它可以查看和修改iOS App里的UI对象的软件,展示App UI图层,类似于Xcode自带的UI Inspector工具,或另一款叫做Reveal的软件。

此外,虽然Lookin主体是一款MacOS程序,它亦可以嵌入你的iOS App而单独运行在iPhone或iPad上。


优点

  • 相比于UI Inspector,Lookin会显示更大范围的视图(不限于手机屏幕),按住Option键,即可测量任意两个view之间的距离。

    请添加图片描述请添加图片描述

  • 由于Lookin是一个独立的软件,可以在操作模拟器或真机的同时通过刷新Lookin来快速查看不同的页面。

    请添加图片描述

  • Lookin展示更多信息,包括视图的变量名,甚至某个UITableViewCell的indexPath(section和row)的信息,并可以复制这个变量名方便在工程中查找。

  • Lookin可以自定义图层折叠级别,并且可以展示出工程中hidden = YES(隐藏🫥)的图层。
    在这里插入图片描述

  • 可以支持在APP内部以和Mac端的独立软件同样的方式展示图层信息。

  • 控制台可以输入以访问当前选中类的属性和方法。
    在这里插入图片描述

  • 可以将当前的页面UI信息导出成文件脱离Xcode单独去查看,或发送给别人帮忙解决问题。
    在这里插入图片描述

  • 可以监听某个类的某个方法,此方法调用时软件会打印堆栈信息(非debug环境时比较方便)。

使用方法

  1. 下载Mac软件Lookin](https://lookin.work/)
  2. 如果这是你的 iOS 项目第一次使用 Lookin,则需要先把 Lookin 的 iOS Framework 嵌入到你的 iOS 项目中,推荐使用cocoapods,在podFile文件中导入以下文字:
    pod 'LookinServer', :configurations => ['Debug']
  3. 启动App,而后打开Lookin程序

在iPhone或iPad 中使用

在工程已经pod 'LookinServer', :configurations => ['Debug']的前提下,在工程中合适的地方运行代码:
[[NSNotificationCenter defaultCenter] postNotificationName:@"xxx" object:nil];

xxx可以有三种情况(或者叫功能):

  • Lookin_Export 导出文件
  • Lookin_2D 审查元素
  • Lookin_3D 展示3D视图

开源

抛开不太好用的Xcode UI Inspector不谈,它的主要竞品是国外收费的Reveal。

请添加图片描述

概括来说,二者在刷新速度等性能方面差异不大,但Reveal作为收费、成熟的商业团队产品,功能更全更稳定,文档完善,且有着很好的迭代节奏。

而Lookin功能较少、迭代较慢,尤其在布局约束调试方面很弱,但有着免费开源的优点,且不乏测距、变量名显示等小的亮点功能。

Lookin Github源码

参考

Github: |老司机 iOS 周报 #199 | 2022-04-18 || QMUI团队Demo|
微信文章: |Lookin 原理及 5 个开发难点|

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++语言】继承:类特性的扩展,重要的类复用!

【C语言】继承,更进一步的复用 ✨精美思维导图奉上继承1. 继承的相关概念:2. 继承的定义:(1)定义格式:(2)访问限定符和继承方式:(3)默认继承方式&…

C++_C++11的学习

1. 统一的列表初始化 1.1{}初始化 在C98 中,标准就已经允许使用花括号 {} 对数组或者结构体元素进行统一的列表初始值设定。而到了C11,标准扩大了用大括号括起的列表 ( 初始化列表 )的使用范围,使其能适用于所有的内…

最大连续1的个数(滑动窗口)

算法原理: 这道题大眼一看是关于翻转多少个0的问题,但是,如果你按照这种思维去做题,肯定不容易。所以我们要换一种思维去做,这种思维不是一下就能想到的,所以想不到也情有可原。 题目是:给定一…

ESP32-C6接入巴法云,Arduino方式

ESP32-C6接入巴法云,Arduino方式 第一、ESP32-C6开发环境搭建第一步:安装arduino IDE 软件第二步:安装esp32库第三:arduino 软件设置 第二:简单AP配网程序第一步:程序下载第二步:程序使用第三步…

linux centos nginx配置浏览器访问后端(tomcat日志)

1、配置nginx访问tomcat日志路径 vim /usr/local/nginx/conf/nginx,conflocation ^~ /logs {autoindex on;autoindex_exact_size on;autoindex_localtime on;alias /home/tomcat/apache-tomcat-9.0.89-1/logs;}###配置讲解### 1、location ^~ /logs { … }: location&#xf…

代码随想录——从前序与中序遍历序列构造二叉树(Leetcode105)

题目链接 递归 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

构建智能化商场存包柜平台的数据结构设计

随着城市生活节奏的加快,人们对于便利的需求也越来越迫切。在城市中,商场存包柜平台成为了解决人们日常出行中行李存放问题的重要设施。为了更好地管理和运营这些存包柜,智能化商场存包柜平台的数据结构设计显得尤为关键。 一、需求分析与功能…

每日AIGC最新进展(12):在舞蹈视频生成中将节拍与视觉相融合、Text-to-3D综述、通过内容感知形状调整进行 3D 形状增强

Diffusion Models专栏文章汇总:入门与实战 Dance Any Beat: Blending Beats with Visuals in Dance Video Generation https://DabFusion.github.io 本文提出了一种名为DabFusion的新型舞蹈视频生成模型,该模型能够根据给定的静态图像和音乐直接生成舞蹈…

韩顺平0基础学Java——第11天

p234-249 又一个月了,时间过得好快啊,希望支棱起来 可变参数 public int sum(int ... nums){ } 这个nums是数组 细节: 1可变参数可以为0个,或任意个 2可变参数的实参可以为数组 3可变参数的本质就是数组 4可变参数可以和普通…

MicroLED:苹果对知识产权的影响

Yole的洞察揭示,MicroLED IP在经历了七年的爆炸式增长后,已然屹立于行业之巅。苹果公司,作为微LED领域的先行者,早在2014年便敏锐地捕捉到Luxvue这家初创公司的潜力,将其纳入麾下,引发了业界的广泛关注。然…

基线管理概述

一、基线概念 ①安全基线 ②安全基线与英文排版的基线类似,是一条参考标准线。 ③安全基线表达了最基本需要满足的安全要求。 ④安全基线表达了安全的木桶原理木桶原理:一只木桶盛水的多少,并不取决于桶壁上最高的那块 木块,而恰恰取决于…

如何让大模型更聪明?提升AI智能的关键策略

如何让大模型更聪明?提升AI智能的关键策略 🤖 如何让大模型更聪明?提升AI智能的关键策略摘要引言方向一:算法创新🚀1.1 自监督学习的崛起1.2 强化学习的应用 方向二:数据质量与多样性📊2.1 数据…

大学校园广播“录编播”与IP广播系统技术方案

一、项目概述 1、校园IP网络广播系统概述 大学校园广播系统是学校整个弱电系统中的子系统,它是每个学校不可缺少的基础设施之一,在传递校园文化、传播校园新闻资讯方面发挥着重要的作用。近几年来,虽然视频技术和网络技术在飞速发展&#xf…

VS2022配合Qt与boost.asio实现一个TCP异步通信系统远程操作mysql数据库

上一篇博客我们通过boost.asio搭建了一个简单的异步服务器,但是那是基于命令行的,所有用起来还是相当枯燥的,这次我们配合Qt实现一个简陋的前端页面来控制后端mysql数据库中的表,实现添加密钥的功能(本次博客使用的boost版本是1.8…

AI智能体|手把手教你使用扣子Coze图像流的文生图功能

大家好,我是无界生长。 AI智能体|手把手教你使用扣子Coze图像流的文生图功能本文详细介绍了Coze平台的\x26quot;图像流\x26quot;功能中的\x26quot;文生图\x26quot;节点,包括创建图像流、编排文生图节点、节点参数配置,并通过案例…

Three.js 研究:3、创建一个高科技圆环

打开Alpha混合 修改环形颜色,更改发光的颜色,更改发光的强度为2 更改世界环境灯光

PyTorch学习笔记:新冠肺炎X光分类

前言 目的是要了解pytorch如何完成模型训练 https://github.com/TingsongYu/PyTorch-Tutorial-2nd参考的学习笔记 数据准备 由于本案例目的是pytorch流程学习,为了简化学习过程,数据仅选择了4张图片,分为2类,正常与新冠&#xf…

解决鼠标滚动时element-ui下拉框错位的问题

问题描述:elementUi的el-select下拉选择框,打开之后,直到失去焦点才会自动关闭。 在有滚动条的弹窗中使用时就会出现打开下拉框,滚动弹窗,el-select下拉框会超出弹窗范围的问题. 解决方案: 1、先在util文件夹下创建个hideSelect.js文件,代码…

《德米安:彷徨少年时》

文前 我之所愿无非是尝试依本性而生活, 却缘何如此之难? 强盗 疏于独立思考和自我评判的人只能顺应现成的世俗法则,让生活变轻松。其他人则有自己的戒条:正派人惯常做的事于他可能是禁忌,而他自认合理的或许遭他人唾…

GM Bali,OKLink受邀参与Polygon AggIsland大会

5月16日-17日,OKLink 受到生态合作伙伴 Polygon 的特别邀请,来到巴厘岛参与以 AggIsland 为主题的大会活动并发表演讲,详细介绍 OKLink 为 Polygon 所带来的包括多个浏览器和数据解析等方面的成果,并与 Polygon 一起,对…