iOS-获取UIView的全部层级结构
2016-02-20 20:55
1141 查看
在iOS中获取UIView的全部层级结构
应用场景在实际 iOS 开发中,非常多时候都须要知道某个 UI 控件中包括哪些子控件,而且分清楚它们的层级结构和自个的 frame 以及 bounds ,以便我们完毕复杂的 UI 布局,以下的代码就能非常方便的获取某个 UI 控件的全部的层级结构。我们能够用它计算,然后把结果写入到本地磁盘。导出成XML文件,这样我们就能够非常直观的看出它内部的细节。
/** * 返回传入veiw的全部层级结构 * * @param view 须要获取层级结构的view * * @return 字符串 */ - (NSString *)digView:(UIView *)view { if ([view isKindOfClass:[UITableViewCell class]]) return @""; // 1.初始化 NSMutableString *xml = [NSMutableString string]; // 2.标签开头 [xml appendFormat:@"<%@ frame=\"%@\"", view.class, NSStringFromCGRect(view.frame)]; if (!CGPointEqualToPoint(view.bounds.origin, CGPointZero)) { [xml appendFormat:@" bounds=\"%@\"", NSStringFromCGRect(view.bounds)]; } if ([view isKindOfClass:[UIScrollView class]]) { UIScrollView *scroll = (UIScrollView *)view; if (!UIEdgeInsetsEqualToEdgeInsets(UIEdgeInsetsZero, scroll.contentInset)) { [xml appendFormat:@" contentInset=\"%@\"", NSStringFromUIEdgeInsets(scroll.contentInset)]; } } // 3.推断是否要结束 if (view.subviews.count == 0) { [xml appendString:@" />"]; return xml; } else { [xml appendString:@">"]; } // 4.遍历全部的子控件 for (UIView *child in view.subviews) { NSString *childXml = [self digView:child]; [xml appendString:childXml]; } // 5.标签结尾 [xml appendFormat:@"</%@>", view.class]; return xml; }
相关文章推荐
- UI整理-----part4--UIScrollView
- EasyUI系列学习(十)-Tabs(选项卡)
- 设置UITbaBar和UIBarButtonItem的图片有蓝色图层覆盖
- 百度ueditor学习使用
- LeetCode-334. Increasing Triplet Subsequence
- UINavi中push控制器的时候隐藏TabBar
- leetcode(304) Range Sum Query 2D - Immutable
- 使用 Bluemix™ Live Sync 快速更新 Bluemix 上运行的应用程序实例
- Arduino代码机制-IO
- android小问题--------------------SQLiteDatabase.insert(table, nullColumnHack, values)参数
- scrapy 爬网站 显示 Filtered offsite request to 错误.
- 交换Button中图片与文字的左右位置
- UILabel在Autolayout中的多行显示/动态高度
- 循环中 break 与 continue 的区别
- 分享一款很好的视频处理软件 会声会影X8(huishenghuiyingx8-trial_x64)
- UITableView
- CodeForces 622A Infinite Sequence
- EasyUI系列学习(九)-Panel(面板)
- uiautomatorviewer获取当前屏幕中的各个元素信息包括类名
- 1041. Be Unique (20)