我需要提取所有嵌套的子视图(从多个视图)并添加它们,并将正确的位置定位到一个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/