overview

如果把和控件打交道比作是打副本的话,那Reveal就相当于是一件顶级的装备。

Reveal的强大

Reveal是一个很强大的iOS View Hierarchy工具,通过Reveal可以在开发中得到一些帮助:

  • 帮助排查开发过程出现视图层级、坐标不正确的问题
  • 实时修改某一个视图的颜色、坐标等属性
  • 查看视图的具体约束,帮助解决约束冲突
  • 保存正在调试APP的层级文件,便于协作交流
  • 越狱机器上查看其它APP的层级、布局方式

错误的打开方式

早期使用Reveal的时候,在网上查看过一些博客,按照各位博主的方法,成功实现了在开发过程中调试无忧的目的。

你通常在早期博客里看到的使用方式是这样的:


通过 reveal_load_sim 为模拟器加载Reveal的动态库  
通过 reveal_load_dev 为真机加载Reveal的动态库  
...

overview
然而… 在Reveal 1.6版本,好用吗?(・ω・)

正确的姿势

Reveal的集成姿势有三种:

文档见如上链接,本文不会累述(没错,我就是懒的介绍(๑˘ ₃˘๑)),本文只介绍使用CocoaPods的真机测试方式,以及全局Xcode模拟器的测试方式。

==> 真机📱
使用CocoaPods为真机测试集成Reveal非常简单,基本步骤如下:

  • 项目目录下$ vim Podfile
  • 加入pod 'Reveal-iOS-SDK', :configurations => ['Debug']
  • 安装Pod$ pod install

安装完成后,你的工程就已经为真机Debug模式,配置好了Reveal使用所需要的设置,此时你Run起你的项目,就可以在Reveal上查看层级了。

==> 模拟器💻
相比于真机,我们在模拟器上运行的次数会更多,基本步骤如下:

  • 增加一个系统断点,工程 View → Navigators → Show Breakpoint Navigator,点击左下角 + 号,选择Add Symbolic Breakpoint
  • 在弹出的断点配置框中,设置SymbolUIApplicationMain
  • 点击Add Action(Debugger Command 模式)输入:expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void *)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2) : ((void*)0)
  • 勾选Automatically continue after evaluating actions选项

此时,Run后就可以利用Reveal查看层级了,不过这样每个工程都需要配置这个断点,很是麻烦,可以通过如下方式一劳永逸:

  • 右键刚创建的断点
  • 选择Move Breakpoint ToUser

Done.

Finally

至此,终于可以用正确的姿势在真机、模拟器运行后,尽情的在Reveal上查看层级、修改属性啦!(≖‿ゝ≖)✧

注:如果对Reveal想更深入的了解,移步http://support.revealapp.com/