打印subview的层次结构

来源:互联网 发布:微软sql授权 编辑:程序博客网 时间:2024/04/26 17:57

- (void)prp_printSubviewsWithIndentString:(NSString *)indentString {    if (indentString == nil) indentString = @"";        NSString *viewDescription = NSStringFromClass([self class]);        printf("%s+-%s\n", [indentString UTF8String],                        [viewDescription UTF8String]);        if (self.subviews) {        NSArray *siblings = self.superview.subviews;        if ([siblings count] > 1 &&             ([siblings indexOfObject:self] < [siblings count]-1)) {            indentString = [indentString stringByAppendingString:@"| "];        } else {            indentString = [indentString stringByAppendingString:@"  "];        }                for (UIView *subview in self.subviews) {            [subview prp_printSubviewsWithIndentString:indentString];        }    }}- (void)prp_printSubviews {    [self prp_printSubviewsWithIndentString:nil];}- (void)prp_populateSubviewsMatchingClass:(Class)aClass                                   inArray:(NSMutableArray *)array                                exactMatch:(BOOL)exactMatch {    if (exactMatch) {        if ([self isMemberOfClass:aClass]) {            [array addObject:self];        }    } else {        if ([self isKindOfClass:aClass]) {            [array addObject:self];        }            }    for (UIView *subview in self.subviews) {        [subview prp_populateSubviewsMatchingClass:aClass                                            inArray:array                                         exactMatch:exactMatch];    }}- (NSArray *)prp_subviewsMatchingClass:(Class)aClass {    NSMutableArray *array = [NSMutableArray array];    [self prp_populateSubviewsMatchingClass:aClass                                     inArray:array                                  exactMatch:YES];    return array;}- (NSArray *)prp_subviewsMatchingOrInheritingClass:(Class)aClass {    NSMutableArray *array = [NSMutableArray array];    [self prp_populateSubviewsMatchingClass:aClass                                     inArray:array                                  exactMatch:NO];    return array;    }


系统提供了私有api  recursiveDescription 

0 0
原创粉丝点击