我无法理解在Xcode中如何执行分层。我有一个带有视图的.xib,该视图有6 UIImageView
个,每个都包含不同的图像。我为每个创建了IBOutlets
因此我可以在运行时更改图像。
我现在想要更改UIImageViews在运行时绘制的顺序,因此后面的imageA现在被绘制在其他所有内容之上。如何更改图层顺序?我最初尝试删除所有子视图并使用[self.view insertSubview: atIndex: ]
查看是否可以更改绘制顺序,但我的代码崩溃了。
有人能告诉我这样做的正确方法吗?
先谢谢了, 埃利奥特
答案 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)。