编写UIView层次结构

时间:2014-09-05 11:47:03

标签: ios objective-c uiview uiview-hierarchy

我正在尝试编写一个文本文件,其中包含屏幕中包含的所有视图的名称。例如 我有一个UIView我有2 UIButtons所以文件应该如下所示..

UIWindow
    UIView
        UIButton
            UIButtonLabel
        UIButton
            UIButtonLabel
        _UILayoutGuide
        _UILayoutGuide

这就是我试图做的事情,但我无法实现上述等级。

-(void) writeViewHierarchyForView:(UIView *)aView inString:( NSMutableString *)str
{
    //NSMutableString *str = [[NSMutableString alloc] init];
    NSLog(@"title Text = %@", aView.titleText);
    if(nil == aView.children){
        [str appendString:@"\n"];
        return;
    }
    else{
        for(UIView *view in aView.subview){
            [str appendString:@"\n\t"];
            [str appendString:view.name];
            NSLog(@"%@",view.name);
            [str appendString:@"\t"];
            [self writeViewHierarchyForView:view inString:str];
        }
    }
}

这不是我在任何项目中使用的东西,只是为了好玩而做。 任何建议都会很棒。

1 个答案:

答案 0 :(得分:2)

您可能无法使用以下代码向应用程序商店提交应用程序(听起来您根本不需要),因为它是未记录的私有API,但您可以在调试中使用它:

NSLog(@"%@", [self.view valueForKey:@"recursiveDescription"]);

您还可以在LLDB控制台中使用recursiveDescription进行断点时的调试:

po [someView recursiveDescription]