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 个开发难点|

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

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

相关文章

内存泄漏案例分享4-异步任务流内存泄漏

案例4——异步任务内存泄漏 异步任务,代指起子线程异步完成一些数据操作、网络接口请求等,通常会使用以下API: Runnbale,Thread,线程池RxJavaHandlerThread 而这些异步任务很有可能操作内存泄漏,下面我们以Rxjava为…

【实战JVM】-基础篇-02-类的声明周期-加载器

【实战JVM】-基础篇-02-类的声明周期-加载器 3 类的生命周期3.1 生命周期的概述3.2 加载阶段3.2.1 查看内存中的对象 3.3 连接阶段3.3.1 验证阶段3.3.1.1 验证是否符合jvm规范3.3.1.2 元信息验证3.3.1.3 验证语义3.3.1.4 符号引用验证 3.3.2 准备阶段3.3.3 解析阶段 3.4 初始化…

使用OpenCV计算滑块缺口(2)

上一篇 openCV 计算滑块缺口,执行可能出现问题,这一篇文章,是上一版本的补充(https://blog.csdn.net/weixin_42883164/article/details/137604965) 实现计算滑块缺口的步骤: 接口部分参照上述文章&#xf…

创新营销之路:探索订单排队模式的无限可能

随着市场竞争的日益激烈,企业家们都在寻找新的营销策略来脱颖而出。在这里,我想向大家介绍一种充满活力和创新性的营销新模式——订单排队模式。它不仅能够有效提升用户黏性,还能为企业带来持续的增长动力。 一、订单排队模式的魅力 订单排队…

为什么建议大家加快拥抱Kotlin,说点不一样的

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 Kotlin自2017年起被Google正式宣布为Android的编程语言之一,随后在2019年进一步宣布Kotlin为Android的首选语言,普及速度…

京东商品API接口:电商数据自动化的钥匙

在电子商务的蓬勃发展中,京东作为中国领先的电商平台之一,提供了丰富的API接口,使得开发者能够访问和利用其庞大的商品数据。京东商品API接口不仅为商家提供了便捷的商品管理工具,也为数据分析和电商自动化提供了强大支持。 一、…

上下文视觉提示实现zero-shot分割检测及多visual-prompt改造

文章目录 一、Closed-Set VS Open-set二、DINOv2.1 论文和代码2.2 内容2.3 安装部署2.4 使用效果 三、多visual prompt 改造3.1 获取示例图mask3.2 修改函数参数3.3 推理代码3.4 效果的提升! 四、总结 本文主要介绍visual prompt模型DINOv,该模型可输入八…

使用selenium实现网页的自动化登录

1.jdk版本(jdk11) 2.检查->元素->查看输入框Id 3.代码 import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.edge.EdgeDriver; import org.openqa.selen…

深度解析:医院管理全面数字化转型的技术实现与优势

随着科技的飞速发展,信息技术的应用已经渗透到社会的各个角落,医疗行业作为关乎人民群众生命健康的重要领域,更是急需借助科技的力量实现转型升级。在这样的时代背景下,全面数字化转型成为了医院管理创新的必由之路。 北京XXX医院…

untiy tmp textmeshPro text 代码设置对齐方式

TipText.alignment TextAlignmentOptions.Left;

linux下宝塔负载100%解决方法

今天发现服务器宝塔面板负载居然是100% 但是cpu 和内存其实并不高 通过命令查看主机 uptime 中load average 居然高达18.23 看来负载是真的高了 通过vmstat 看看具体问题 procs: ​ r 表示运行和等待CPU时间片的进程数,这个值如果长期大于系统CPU个数…

Pytorch深度学习实践笔记9(b站刘二大人)

🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:pytorch深度学习 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibi…

AR游戏开发指南,AR游戏软件定制

增强现实(AR)游戏是一种将虚拟内容叠加到现实世界中的互动游戏类型。通过摄像头和传感器,AR游戏可以让玩家在现实环境中与虚拟物体互动,提供一种沉浸式的游戏体验。玩家可以在真实的世界中看到并与虚拟角色、物体或信息进行交互&a…

【一竞技CS2】YaLLa 2024邀请TheMongolz和BB

1、近日YaLLa Compass 2024主办方已宣布了最后两支受邀参赛的队伍是TheMongolz和BB两支战队,赛事将于6月5日至9日间在阿联酋阿布扎比的Space 42 Arena举行,总奖金为40万美元。 值得一说的是本次赛事的12支参赛队伍中,Cloud9和FURIA尚未确定参赛阵容。在arT离队后,FURIA让青训队…

LaTex安装及配置(Windows)

LaTex安装及配置(Windows) 安装环境安装texlive下载texlive安装 编辑器安装texstudio下载texstudio安装 环境配置 使用第一个LaTex文档新建文件编程查看results 安装 环境安装 texlive下载 镜像清华源下载地址:https://mirrors.tuna.tsing…

HTTPS能否避免流量劫持?如何实现HTTPS

在当今数字化时代,网站安全已经成为企业和个人的头等大事。随着网络犯罪和数据泄露的增加,保护您的网站免受潜在威胁比以往任何时候都更加重要。网站安全的一个关键组成部分是HTTPS,它代表着安全的超文本传输协议。HTTPS是标准HTTP协议的安全…

Python中的@property装饰器:幕后的工作原理

Python中的property装饰器:幕后的工作原理 在Python中,property装饰器是一个强大且灵活的工具,它允许我们将方法转换为属性的getter方法,从而为类的使用者提供一个更简洁、更直观的接口。通过使用property,我们可以实…

某商业落地充电桩后台服务器通迅协议V2.28 开源 | 嘎嘎快充充电桩平台V2(支持 汽车 电动自行车 云快充1.5、云快充1.6 单体服务 )

嘎嘎快充开源充电桩平台 源码下载地址https://gitee.com/itholiday 充电桩与后台服务器 通讯协议 V2.28 目录 1 网络拓扑 1.1 功能界定: 1.1.1 充电机智能终端 1.1.2 智能中心管理系统 1.2 接口定义: 1.3 通讯方式: 1.4 通信规约 1.5…

Java通过Html(ftl模板)生成PDF实战, 可支持商用

Java通过Html(freemarker模板)生成PDF实战, 可支持商用 技术架构 springboot freemarker [pdfbox] flying-saucer-pdf 生成流程: freemarker: 根据数据填充ftl模板文件,得到包含有效数据的html文件(包含页眉页脚页码的处理&#xff0c…

InteractiveGraph图谱中vue项目中如何使用

InteractiveGraph图谱中vue项目中如何使用 一、下载js和css和字体二、vue2.0项目中引用三、grap组件 一、下载js和css和字体 //在这里面找 https://github.com/grapheco/InteractiveGraph/blob/master/dist/examples/example1.html二、vue2.0项目中引用 //main.js中全局引入$ …