2012-01-26 72 views
1

我无法理解Xcode中如何执行分层。我有一个.xib的视图,该视图有6 UIImageView的每个包含不同的图像。我已经创建了IBOutlets为每个这些,所以我可以在运行时更改图像。UIImageView图层顺序

我现在想改变UIImageViews在运行时绘制的顺序,所以后面的imageA现在绘制在其他所有东西之上。我怎样才能改变图层顺序?我最初尝试删除所有的子视图,并使用[self.view insertSubview: atIndex: ]来查看我是否可以改变绘制顺序,但我的代码崩溃。

任何人都可以告诉我这样做的正确方法吗?

在先进的感谢, 埃利奥特

回答

3

我猜你正在寻找这些UIView的方法:

1: exchangeSubviewAtIndex:withSubviewAtIndex: 交流子视图在指定的指数。

- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2 

2: bringSubviewToFront: 移动指定子视图,使得其出现在它的兄弟姐妹的顶部。

- (void)bringSubviewToFront:(UIView *)view 

3: sendSubviewToBack: 移动指定的子视图,使其显示它的兄弟姐妹后面。

- (void)sendSubviewToBack:(UIView *)view 

使用这些方法,你可以交换子视图为了得到一个UIView的出现在另外一个在其上海华......如果这就是你在问什么....

+0

完美谢谢!我将在明天看看这些方法,因为它们看起来像我正在寻找的东西。 –

+0

不错。我从来没有找过带来/发送对。想想我必须手动完成。 – smparkes

+0

是的,它像一个魅力ta'工作! –

1

崩溃可能是因为当你从其父中删除图像,其保留计数变为零,被释放。

如果您只是想交换两个视图,请参阅- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2 on UIView。如果你想做一个更复杂的交换,你可以删除和读取,只要确保你保留你删除的视图(ARC尽管)。

+0

是的,我有一种感觉,你是正确的,这是导致崩溃,我会尝试与交换方法,因为它应该做我所需要的。 –