我需要提取所有嵌套的子视图(从多个视图)并添加它们,并将正确的位置定位到一个UIView 1级别的深处。

NSArray*contentViews;    // views with complicated nesting of subViews
UIView *flatView;      // All the subviews but as simple subviews of the parent.

[self deepCopyAllSubviews:[contentViews[i++] subviews] to newView:flatView];

我的问题是如何找到与flatView相关的正确原点?
-(void) deepCopyAllSubviews:(NSArray*)subviews newView:flatView {

    [subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

        CGRect frame = [(UIView*)obj frame];

        frame.origin.x =  ??

        [(UIView *)obj setFrame:frame];

        [flatView addSubview:obj];

        NSArray *subs = [(UIView*)obj subviews];

        if ([subs count]>0) {

            [self deepCopyAllSubviews:subs newView:flatView];
        }
    }];
}

最佳答案

您可以使用UIView的转换方法。例如,在您的???行中,尝试:

frame.origin = [((UIView *)obj).superview convertPoint:frame.origin toView:flatView];

如果原始视图仍附加到其原始 super 视图,并且flatView存在于同一窗口的层次结构中,则这些转换方法将能够为您提供我认为您正在寻找的相对几何形状。

关于ios - 将UIView subview 深度复制到一个UIView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23267210/

10-15 06:37