2011-03-31 127 views
0

我有一个初学者的问题。以编程方式添加子视图与将它们添加到InterfaceBuilder中

我想知道子视图的级别以及如何确定它们。请考虑把一个按钮,在IB(sampleButton),然后编程方式创建一个子视图,就像这样:

[view insertSubview:aView atIndex:[view.subviews count]]; 

这简直是等同于:现在

[view addSubview:aView]; 

,在这两种情况下,我的指数(其被称为z,对吗?)应该是1,如果我没有弄错的话。

我有一个按钮添加到我的视图在IB应该在索引0(z = 0,或者他们从一开始?)。然后,如果我做了一个view.subviews计数,这会给我数字1,因为我在索引0有一个对象。所以我的新子视图'aView'将被放置在索引= 1,这是我的sampleButton上面的一层。

到目前为止这么好。但是如果我不想要这样的事情呢?如果我想成为更高级别的sampleButton(例如1)而我的'aView'最低(例如0)?我可以简单地这样做:

[view insertSubview:aView atIndex:0]; 

请问这仅仅参加IB创建照顾我的按钮,它推到另一层或者我会告诉IB是sampleButton不应该是在z = 0?

回答

1

它的行为就像你已经猜到的那样:如果你在索引0处插入一个子视图,它会在所有其他子视图的“下方”。

+3

替代'[view bringSubviewToFront:aView]' 将做同样的事 – Seega 2011-03-31 09:34:46

+1

我会说seega的替代方案实际上是正确且唯一正确的解决方案,因为OP提到这些视图已经被添加为IB中的子视图。 – Till 2011-03-31 09:37:09

+0

@Seega:谢谢,我想这正是我真正想要的。 – 2011-03-31 10:23:35

相关问题