How to get UIView hierarchy index? (i.e. the depth in between the other subviews)

前端 未结 2 1528
时光说笑
时光说笑 2020-12-09 03:10

From UIView docs:

(void)insertSubview:(UIView *)view atIndex:(NSInteger)index

It\'s great that I can insert a UIView at a certain index, bu

2条回答
  •  难免孤独
    2020-12-09 03:18

    Set up a recursive method as follows:

    - (void)printViewHierarchy:(UIView *)viewNode depth:(NSUInteger)depth
    {
        for (UIView *v in viewNode.subviews)
        {
            NSLog(@"%@%@", [@"" stringByPaddingToLength:depth withString:@"|-" startingAtIndex:0], [v description]);
            if ([v.subviews count])
                [self printViewHierarchy:v depth:(depth + 2)]; // + 2 to make the output look correct with the stringPadding
        }
    }
    

    Then call it with:

    [self printViewHierarchy:self.view depth:0];
    

    Output:

    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: >
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|->
    
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-|-|-|->
    [Line: 472] -[iPadRootViewController printViewHierarchy:depth:]: |-|-|-|-

提交回复
热议问题