zoukankan      html  css  js  c++  java
  • iOS-获取UIView的全部层级结构

    在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;
    }
  • 相关阅读:
    python 二进制加法
    python性能测试值timeit的使用示例
    Java和python中的面向对象
    python itern机制的
    Python选择指定文件夹的文件然后复制出其中几个文件到新的文件夹
    软件开发中什么是CI/CD
    python 列表切片之负数的含义代码示例
    python 找出数组重复的元素
    python位运算版的算术四则运算
    [转载]逐步建设企业DevOps能力
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5203971.html
Copyright © 2011-2022 走看看