xml小方法-解析window相关视图

- (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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Xamarin XAML语言教程构建ControlTemplate控件模板 控件模板ControlTemplate...
    大学霸IT达人阅读 1,103评论 0 1
  • (转自网易论坛) 1 测试过程概述 1.1软件测试过程概述 软件测试过程是一种抽象的模型,用于定义软件测试的流程和...
    _老吉阅读 1,245评论 0 2
  • 要设置label的行数为0,注意一点小问题,就是一般情况下计算出来的高度和宽度在应用中还是会出现点问题的[显示偏小...
    KermitX阅读 2,856评论 4 8
  • 最近,项目版本迭代完成,新导入了MJRefresh框架,花了点时间,阅读了下源码,源码比较简单,很容易读懂,下面列...
    e5a8d3183387阅读 278评论 0 0
  • “什么时候,你能与一个老人待一个下午,饶有兴趣地听完他精彩或不精彩的人生故事,那说明你已经成熟。” ——川瑞康成 ...
    何起弦月阅读 261评论 0 0