UIImageView图层顺序

时间:2012-01-26 17:04:54

标签: iphone xcode uiimageview uiimage layer

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

我现在想要更改UIImageViews在运行时绘制的顺序,因此后面的imageA现在被绘制在其他所有内容之上。如何更改图层顺序?我最初尝试删除所有子视图并使用[self.view insertSubview: atIndex: ]查看是否可以更改绘制顺序,但我的代码崩溃了。

有人能告诉我这样做的正确方法吗?

先谢谢了, 埃利奥特

2 个答案:

答案 0 :(得分: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出现在另一个上面...如果这就是你所要求的......

答案 1 :(得分:1)

崩溃可能是因为当您从其父级删除图像时,其保留计数将变为零并被取消分配。

如果您只想交换两个视图,请参阅- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2上的UIView。如果您想进行更复杂的交换,可以删除并读取,只需确保保留删除的视图(尽管有ARC)。