InAppViewDebugger 1.0.3

InAppViewDebugger 1.0.3

Indragie Karunaratne 维护。




InAppViewDebugger

License CocoaPods Carthage compatible

InAppViewDebugger

InAppViewDebugger 是一个实现了带有 3D 快照视图和层次结构视图的视图调试器库,类似于 RevealXcode 内置的视图调试器。其主要区别是,正如项目标题所暗示的,它可以嵌入到应用中,用于在设备上调试 UI 问题,而无需连接到计算机。

特性

  • 在 SceneKit 中实现的 3D 快照视图:缩放、平移和旋转的手势控制。
  • 与 3D 视图同步其选择的层次结构(树)视图:这是我一直希望 Xcode 有的一项功能,能够能够通过视觉找到一个视图,并看到它在层次结构视图中的位置。
  • 支持 iPadiPhone:布局是专门针对每种形态设计的。
  • 可扩展性:基本实现支持 UIView 层次结构,但可以轻松扩展以支持任何类型的 UI 框架(例如 CoreAnimation 或 SpriteKit)

要求

  • iOS 11.0+
  • Xcode 10.1+(为 Swift 4.2 构建的框架)

安装

CocoaPods

将以下行添加到您的 Podfile

pod 'InAppViewDebugger', '~> 1.0.3'

Carthage

将以下行添加到您的 Cartfile

github "indragiek/InAppViewDebugger" "1.0.3"

使用

Swift

import InAppViewDebugger

@IBAction func showViewDebugger(sender: AnyObject) {
  InAppViewDebugger.present()
}

Objective-C

@import InAppViewDebugger;

// alternative import (they're the same):
// #import <InAppViewDebugger/InAppViewDebugger-Swift.h>

- (IBAction)showViewDebugger:(id)sender {
  [InAppViewDebugger present];
}

lldb

(lldb) expr -lswift -- import InAppViewDebugger
(lldb) expr -lswift -- InAppViewDebugger.present()

present 函数显示您应用程序关键窗口的 UI 层次结构,在窗口根视图控制器的顶级视图控制器上显示。在 InAppViewDebugger 上还有其他几个方法可用于为特定窗口、视图或视图控制器显示视图调试器。

控件

聚焦元素

要聚焦特定元素的子层次,请 长按该元素 弹出操作菜单并点击“聚焦”。长按可以在层次结构视图和3D快照视图中使用。“日志描述”操作会将元素的描述记录到控制台,如果您连接到了Xcode,可以复制对象的地址以进行进一步调试。

Focusing on an Element

调整层级之间的距离

在快照视图的左下角有一个滑块,可以用来调整层次结构中层级的间距。

Adjusting Distance Between Levels

调整可见层级

在快照视图的右下角有一个范围滑块,可以用来调整层次结构中可见的层级范围。

Adjusting Visible Levels

显示/隐藏标题

每个UI元素都有一个头部,显示其类名。这些标题可以通过 在快照视图的空白区域长按 弹出操作菜单来隐藏或显示。

Showing/Hiding Headers

显示/隐藏边界

与标题相同,每个元素周围绘制的边框也可以显示或隐藏

Showing/Hiding Borders

定制

可以通过创建自定义的Configuration来更改快照视图和层次结构视图的颜色、字体和其他属性。然后将配置传递给类似于InAppViewDebugger.presentForWindow(:configuration:completion:)的函数。

扩展至其他UI框架

当前实现只支持UIView层次结构,但可以通过使任意对象遵从Element协议将其扩展到支持其他UI框架。查看ViewElement的示例实现——通过提供框架的框架、快照图像和其他一些信息,您可以为您提供自己的框架的上述所有功能。

一个Snapshot实例表示UI元素层次结构的递归快照,它使用Element来构建。然后可以将快照传递到

InAppViewDebugger.presentWithSnapshot(:rootViewController:configuration:completion:)

显示视图调试器。

致谢

  • Kyle Van Essen,他的这条推文展示了Square的实现的快照,这激发了我构建这个手势
  • AudioKit SynthOne,这是一个令人印象深刻的开源iPad音频合成器应用程序,如上图所示,是一个非常棒的演示

联系方式

许可

InAppViewDebugger 采用 MIT 许可证。更多信息请参阅 LICENSE 文件。