私のアプリでは、サブビューを前面に出し、後で元のレイヤー位置に戻そうとしています。コードは非常に単純です。
サブビューを前面に表示するには (カスタム 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]];
このコードを使用すると、2 つのサブビューがある場合、次のようになります。
ビュー A とビュー B があるとします。ビュー A はビュー B の上にあります。ビュー B をタップすると、前面に表示されます。ビュー B をもう一度タップしても (元の場所に戻るはずです)、何も起こらないので、ビュー A になっています。ここでビュー A をタップすると、前面に表示されますが、もう一度タップすると (そうする必要があります)元の z 位置に戻ります: ビュー B の下)、その兄弟ビューはすべて消えます!
この問題を引き起こしている可能性のあるものを誰かが見ていますか?