在我的应用程序中,我尝试将子视图放在前面,然后稍后将其放回其原始图层位置。代码应该很简单:
将子视图置于前面(在我的自定义 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)下面,它的所有兄弟视图都消失了!
有谁看到可能导致此问题的原因?