UI调试出树结构 recursiveDescription 方法

http://blog.csdn.net/hero82748274/article/details/47682047
最近一直在疑惑为什么有NavigationBar的情况, 我在view里面添加了一个UIlabel, 希望这个UIlable 的偏移的位置是离NavigationBar 底部 20 点即可。
我初始化使用的方法是 根据 获取状态栏的高度设计。然后计算他的高度

 NSInteger height = self.navigationController.navigationBar.frame.size.height+20;
self.label  = (CGRect) {0,height,200,20};
[self.view addSubView:self.label];

可是在我使用iOS 6的 真机调试发现,这个UILabel偏移得太厉害,我心想明明导航栏的高度就是44 ,再加上状态栏的20 就是 64,于是我的frame的高度值应该64+20(偏移值)就正确了。可是我真机调试发现效果相差太大, 无论我怎样理解都找不到问题原因。今天,我通过打印这个父类这个recursiveDescription 我一切的疑惑都解决到了。

(一些博客也提及到这个方面的问题)。IOS6和IOS7 改变导致了一些适配的问题。刚好我的手机一直只是IOS6系统。所以今天使用这个命令解决我之前的疑惑,也了解到组件树形层级关系。
注:这个方法是私有不公开 所以敲打要小心。

(lldb) po [self.view.superview recursiveDescription]

这里写图片描述

可以看到在UIView 有两个属性 一个是父类superview,一个是子类(subviews)。父类只有一个,子类可以有多个。

IOS7 以上模拟器调试下
我们再从日志里面查看到UIViewControllerWrapperView这个类干了什么事? 这个类里面frame 值是 (0 0; 375 667),再看 他的UIView 的frame (0 0; 375 667)。

在IOS 6真机 调试下
你可以看到一个另外一个不同的数据,显示到view其实位置在什么地方。 同样view 的坐标是 (0 ,0) 但是它的父类起始坐标就变成了(0,64)。这种情况是 导航栏+状态栏 ,而view的父类却在(0,64)的位置。

这里写图片描述

曾经有一回,我一直认为UIViewController 只有唯一个View 根对象存在,所以当我认定是这样,但是打印后,找到层级关系,发现这些细微的地方还是有存在的。有了这个方法,对调试真的起到很大作用。解析出为什么在IOS6 有导航栏下,view会在导航栏下面,原因就是他的父类起始发生变化(0,64),但我们平时操作的类都是使用view 进行,然而这个打印结果却让我们发生一些认识的改变
这里写图片描述

IOS7 以上下,UIViewControllerWrapperView 和UIView 的frame 是一样,是全屏的。所以他们开始坐标都是以(0,0)开始。

可以查阅这篇文章的打印结果得到不同情况下的frame值是如何改变。

self.view.frame

topLayoutGuide 和 bottomLayoutGuide 的使用

@property(nonatomic,readonly,retain) id<UILayoutSupport> topLayoutGuide NS_AVAILABLE_IOS(7_0);
@property(nonatomic,readonly,retain) id<UILayoutSupport> bottomLayoutGuide NS_AVAILABLE_IOS(7_0);

在ios7 里面有这样两个属性,在xcode 进行界面整理的时候,发现一个进行约束的时候可以兼容到IOS6 和IOS7的导航栏和状态栏问题操作。这个仅仅使用约束就能完成到。不需要编写任何代码。topLayoutGuide 属性提供了这个获取导航栏和状态栏的高度和。有了这个值就可以指定约束观察点。

需求很简单: 创建一个UIlabel 在导航栏偏移20个点,从上面输出打印日志可以看看 要完成这个操作 注意一点在IOS 6里面 父类 在导航栏下 刚好在 (0,64)的位置上,它的子类view则(0,0)。在IOS7里面,这个发生了变化。所以可以判断两个版本进行

-(void) viewWillLayoutSubviews
{
   CGFloat height = 20; 
    if(IS_IOS7>6)
    {     
       if ([self respondsToSelector:@selector(topLayoutGuide)]) 
       { 
          height = self.topLayoutGuide.length +20(偏移20点完成上面的需求); 
       } 
       self.label.frame = (CGRect){0,height,200,200 };
    }
}

在XIB的使用约束完成指定操作
在xib很方便拖放组件,包括在storyboard也是一样,很方便使用组件。有一个坑要注意是。我第一次使用这个storyboard 选定尺寸显示的时候,被这个玩意搞糊涂了。其实一开始做组件的时候,就要求选定这个尺寸观察。 4,4.7 3.5 也没问题,其实这个并没有太大关系。我们所需要做的工作对组件进行约束。 但是一旦想改这个尺寸,那么不好意思 你的约束和布局都全乱了。要重新来过,所以这个坑我还是遇上了。想想有了这个约束的机制,算出了一个相对位置,相对宽度,相对居中等。这些操作帮助我们做一些手机是屏幕适配工作了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,016评论 4 62
  • 1.是谁在教坏孩子? 不管你承不承认,每一起校园欺凌、暴力事件背后,都有不良家庭在发挥作用。而且现行法律制度对他们...
    明辉微语阅读 880评论 1 11
  • 一直在找一个可以随便写的什么的软件,今天终于找到了,每个人都喜欢自己的一个独立空间,在这个空间里,你就是你!有的人...
    嶶笑姠煖鮟婼嫊阅读 195评论 0 0
  • 86版西游记从小看到大,简直是百看不厌,不愧是经典中的经典,而每次看却都有不同的感悟,因总导演的去世,又再次...
    小怡然lily阅读 336评论 0 2
  • 2017-04-04 丸子姐姐 没有人喜欢吸血鬼,残忍又暴虐,他们给人呈现出来的永远是冷酷无情和不近人情,靠吸食人...
    鲤鱼的呼唤阅读 410评论 0 0