博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS-获取UIView的全部层级结构
阅读量:6309 次
发布时间:2019-06-22

本文共 1364 字,大约阅读时间需要 4 分钟。

在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;}

转载地址:http://xaxxa.baihongyu.com/

你可能感兴趣的文章
困惑的前置操作与后置操作
查看>>
SDNU 1269.整数序列(水题)
查看>>
BZOJ 2118 Dijkstra
查看>>
Go语言基础之结构体
查看>>
SpringCloud:Eureka Client项目搭建(Gradle项目)
查看>>
jqueryValidate
查看>>
ATL使用IE控件,并且屏蔽右键
查看>>
Jenkins
查看>>
linux下使用screen和ping命令对网络质量进行监控
查看>>
数据库设计技巧
查看>>
css定位概述
查看>>
C# 动态修改配置文件 (二)
查看>>
BOM:文档对象模型 --树模型
查看>>
我的Android进阶之旅------>WindowManager.LayoutParams介绍
查看>>
segment
查看>>
获取鼠标的原始移动值
查看>>
Linux信号 编程
查看>>
有关滚动与位置
查看>>
Box2D自定义重力
查看>>
chpasswd
查看>>