在我的应用程序中,我想将一个子视图置于最前面,然后稍后再将其放回到原来的图层位置。代码应该很简单:
将子视图置于最前面(在我的自定义UIView类内部):
[self.superview bringSubviewToFront:self];
很简单。我将原始的z位置存储在一个实例变量中,称为您猜对了,zPosition
。因此,在-bringSubviewToFront:
之前的行是:
zPosition = [self.superview.subviews indexOfObject:self];
所以,我用来将子视图置于最前面的所有代码是:
zPosition = [self.superview.subviews indexOfObject:self];
[self.superview bringSubviewToFront:self];
这个代码的功能符合预期。问题在于当我尝试把子视图放回原来的位置时出现了问题。我的操作很简单:
[self.superview exchangeSubviewAtIndex:zPosition withSubviewAtIndex:
[self.superview.subviews indexOfObject:self]];
使用这个代码,如果我有两个子视图,那么会发生以下情况:
假设我有视图A和视图B。 视图A在视图B上方。 我点击视图B,它就会到最前面。 我再次点击视图B(它应该回到原来的位置),但什么也不发生,所以现在它在视图A上面。 如果我现在点击视图A,它就会到最前面,但是当我再次点击它(所以它应该回到原来的z位置:低于视图B),所有兄弟视图都会消失!
有人看出可能导致这个问题的原因吗?