在前端开发中,有Firebug这样好用的工具直接查看HTML的结构和属性,同时在调试CSS的时候,可以给Div或者需要显示区域的属性加个border,padding之类的来直接地观察,在iOS开发时,界面的调试相对没有这么直观,因此在网上找到这样的方法,可以方便地查看UIView的结构。

interface中增加定义

+ (NSString *)displayViewStruct:(UIView *)view;

实现如下:

+ (void)dumpView:(UIView *)view atIndent:(int)indent into:(NSMutableString *)outstring {
for (int i = 0; i < indent; i++) [outstring appendString:@"--"];
NSString *viewDesc = [[view class] description];
[outstring appendFormat:@"[%2d] %@ - Frame:%@\n", indent, viewDesc, NSStringFromCGRect([view frame])];
if ([viewDesc isEqualToString:@"UIWebView"] || [viewDesc isEqualToString:@"_UIWebViewScrollView"]) return;
for (UIView *subview in [view subviews])
[self dumpView:subview atIndent:indent + 1 into:outstring];
}

+ (NSString *)displayViewStruct: (UIView *)view {
NSMutableString *outstring = [[NSMutableString alloc] initWithString:@"\n"];
[self dumpView:view atIndent:0 into:outstring];
return outstring;
}

调用的时候使用:

NSLog(@"view tree = %@", [className displayViewStruct:containerView]);

参考自:http://poolo.iteye.com/blog/1833821