分析视图层次

1.方法一:

被隐藏的指令是recursiveDescription,你可以简单地用它对view进行检查,在view中调用recursiveDescription来打印它的继承关系。

由于是私有方法,键入时不会有任何提示,注意不要输错。

即在debug区域。输入 po [self.view recursiveDescription]

2.方法二:

做iOS的开发,UI是非常非常重要的一环。调试时我们一般用模拟器,提交前用真机做测试。用模拟器来调试UI效果虽然快捷方便,但有时仍然希望有更强大的工具来帮助分析UI,尤其是专注在UI的效果调试时。最近看到了Reveal这个工具,发现真的是强大无比,类似于FireFox上的FireBug,对于UI上的层的显示很清晰直观,可以很方便的用于UI的调试,用来学习UI的使用也是无上利器。

这个工具目前已经出到正式版了,需要花费银子购买,好在还有30天的试用版本可以下载尝尝鲜。(下载地址http://revealapp.com),据说以前有免费的Beta版本,哪位大大如果有的话请分享一下给我,多谢了。

安装Reveal不算复杂,要把Reveal用到工程中则需要把framework或者dylib编入。

1. 打开Xcode工程

2. 打开Revel工具,选择Menu->Help->Show Reveal
Library in Finder,这样就会打开RevealApp里面带的库

3. 把Reveal.framework加入工程,在弹出框中选中Copy items
into destination group’s folder (if needed).

4.在工程设置中,在Other Linker Flags项增加-ObjC
-framework Reveal

如果你使用的还是Xcode4,那么还需要增加-frame
CFNetwork -frame QuartzCore -framework CoreGraphics

5.
运行你的应用,应用可以是在模拟器上,也可以在真机上,不过必须保证Reveal和你的设备在同一个网络里面,然后选择Reveal里面的链接目标,连上应用后UI就会显示出来,每个层次,每个元素都可以显示,而且可以选中了看到数据。

我这里做的说明是把Reveal作为静态库链接到应用中的,也可以作为动态库来载入,当然,设置略微有点不同,需要在AppDelegate.m文件中增加载入和移除的代码。

最最强悍的是,有人研究出了用Reveal来观看任意app的UI方法,而且也不复杂,这个属于逆向工程的范畴了,在UI的学习上还是不错的(http://c.blog.sina.com.cn/profile.php?blogid=cb8a22ea89000gtw)。

更多

支持键盘

通过视图层级帮你理解复杂的app。

3D导航,可流畅旋转,缩放,选中以及高亮

Reveal可让你清楚哪个视图执行了哪个类。

Reveal可在设备或者模拟器上运行,可以简单地发现,连接至iOS app。

Reveal官方网址:http://revealapp.com/

文章参考:http://blog.csdn.net/lin1986lin/article/details/21182717

http://blog.csdn.net/sakulafly/article/details/17994173

分析视图层次,布布扣,bubuko.com

时间: 2024-12-30 03:31:31

分析视图层次的相关文章

lldb po [$view recursiveDescription]; 打印视图层次

备忘: lldb 打印视图层次: 对某一个view,比如operationBgView po [operationBgView recursiveDescription];

【HANA系列】SAP HANA跟我学HANA系列之创建分析视图一

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA跟我学HANA系列之创建分析视图一 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 原文地址:https://www.cnblogs.com/SAPmatinal/p/11183735.html

Spring MVC源码分析--视图解析过程

写在最前,本文中的源码是4.2.3版本的源码,针对的是JstlView. 视图解析的过程即DispatcherServlet的doDispatch()方法的调用的processDispatchResult(): 1,processDispatchResult()里,调用DispatchServlet的render()方法: 2,render()方法里,调用DispatchServlet的resolveViewName()方法,把配置文件里注册的全部ViewResolver对象添加进来,寻找合适的

IOS 视图层次管理

将一个UIView显示在最前面(父视图里面的最前端),调用其父视图的 bringSubviewToFront方法. 将一个UIView层推送到背后(父视图里面的最后端),调用其父视图的 sendSubviewToBack方法. 如  [xxxxx  bringSubviewToFront:yyyy];  yyyy必须是xxxxx的subview,调用后,yyyy显示在xxxxx里面所有subview的最前端

iOS 视图层次管理 sendSubviewToBack、bringSubviewToFront

直接上代码 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(10, 50, 100, 50)]; view1.backgroundColor = [UIColor blueColor]; [self.v

实施BI需要经过几个层次

商业智能的概念已经在企业中不再陌生,但是对于这个系统的实施,依然有不少企业感到茫然,甚至觉得无从下手,对此国内专业人士表示,实施BI其实很简单,只需要经过四个层次就能很好的执行.那么,究竟是哪四个层次呢? 层次一.满足企业业务需求,重视数据分析汇总 企业要想发展的好就需要利用互联网中的数据来分析有价值的信息,而这个数据是非常庞大的,如果没有好的分析途径,那么,很容易出现判断失误的情况.而BI的出现则是从根本上弥补了这一缺陷.它不仅能够分析.树立各大企业的需求和应用,同时还能够面向企业,进行友好的

Android应用性能优化系列视图篇——恼人的分割线留白解决之道

相信很多一线的开发者都遇到过分割线,作为视觉设计中的最常用的元素之一,虽然简单易画,但在布局排版中往往却起影响视图层级结构的重要作用.往往由于一道小小的分割线,不仅在layout中多个数个视图,而且容易导致布局层级的加深,甚至还需要在Java代码中做逻辑控制. 虽然Android官方提供的布局中,比如ListView.LinearLayout等对分割线都有了相应的实现,但是在处理分割线留白这种设计时常常有心无力.而在越来越多的APP中,分割线留白已经成为了一种设计趋势,所以,如何简单高效地实现分

ios中的视图调试(ios8苹果引入了强大的新技术,不可不看)

在ios8以前,我们想要进行ui实时调试,可以依赖的技术手段有: 用xcode启动app,然后点击xcode暂停运行按钮,然后在调试控制台输入下面语句: po [[UIWindow keyWindow] recursiveDescription] 然后就可以看到完整的UI结构和层级关系,类似如下: <UIWindow: 0x7b691cd0; frame = (0 0; 320 480); gestureRecognizers = <NSArray: 0x7b6921f0>; layer

【React Native】源码分析之Native UI的封装和管理

??ReactNative作为使用React开发Native应用的新框架,随着时间的增加,无论是社区还是个人对她的兴趣与日递增.此文目的是希望和大家一起欣赏一下ReactNative的部分源码.阅读源码好处多多,让攻城狮更溜的开发ReactNative应用的同时,也能梳理RN项目的设计思路,增加自己的内功修为,^_^. ??好的,就让我们轻松的开始吧.此篇是以Android平台源码分析为主,分享Native UI的封装和管理,重点涉及react-native源码中com.facebook.rea