2010-03-10 39 views
3

如何安排(根据深度)视图的子视图在另一个视图前面?安排与外部UIViews有关的UIView子视图

层次结构看起来像这样:

A-- 
    -C 
    -D 
B-- 
    -E 
    -F 

(A和B是使用C & d视图,和E & F以及子视图,分别)

B被上述层状,所以B(E和F)中的每个子视图都位于A(C和D)中的每个子视图之上。我怎样才能让C显示在B中的所有内容之上,但其余部分保持原样?

换句话说,怎样才能让它的显示视图的顺序(先在列表最上方,与下一个绘制背后吧):

C 
B 
E & F (same level) 
A 
D 

感谢, 阿尔谢尼

回答

2

你不能做到这一点,你描述的方式的一个子视图。视图A或B都是最前面的,如果要在视图B前显示视图C,但想要将A和D放在视图B后面,则需要将C从视图A中取出并与A显示在同一水平A & B.

+0

不幸的是,这似乎是这种情况。把C拿出来看是唯一的方法,那就是我最终做的。 – 2010-03-10 16:19:35

1

您是否尝试过使用UIView方法来移动/重定位视图?

insertSubview:aboveSubview: 
insertSubview:atIndex: 
insertSubview:belowSubview: 
addSubViews: 
bringSubviewToFront: 
removeFromSuperview: 
+0

那些只与它是子视图的视图有关。这些不会改变与其他无关的超级视图相关的视图顺序。 – 2010-03-10 02:28:57

0

如果你想C到显示上述B中的一切,使之B.

0

为什么不把C作为A和B的父视图。这应该做你想做的。

C 
    -B 
    -E 
    -F 
    -A 
    -D 

使用Managing the view hierarchy中的函数重新排列视图层次结构。

0

是A和B UIViewControllers?和C,D,E,F UIViews添加到这些控制器?你不是很清楚。

如果它们都是UIViewController的子视图,请参阅我以前的帖子。