如何判断UIView是否在前面(可见)?

And*_*ael 8 iphone uiview

我需要检测前面的哪个视图(当前可见).我怎样才能做到这一点?

这是我想做的事情:

if ( ! <<methodToTellIfViewAIsInFront>>) {
  [viewA prepareToDisplay];
  [window bringSubviewToFront: viewA];
}
Run Code Online (Sandbox Code Playgroud)

ama*_*ttn 13

UIView不一定有前面的概念.UIWindows可以是关键还是不关键,但它不是一回事.

您可以将视图带到前面,但这并不意味着它是可见的还是不可见的.请记住,视图可以是任何大小.

深埋在层次结构中的UIView可以是部分可见的,可以是模糊的,也可以是一些半透明视图的背后.同样,如果修改了不透明度值或隐藏标志,则前面的视图可能根本不可见.

我想你要做的是检查你的superview或UIWindow的子视图NSArray并检查它.我不记得哪个是前面的,但它是第一个或最后一个对象.

子视图是用画家的方法绘制的.视图按从最远到最近的顺序绘制,最后绘制的对象是"前面".

  • 对于UIViews,子视图数组的索引0处的子视图是最靠后的子视图,其他子视图按顺序绘制在该视图之上. (7认同)

Luc*_*hwe 5

如果 viewA 在前面,以下将返回 YES:

[[viewA.superview.subviews lastObject] isEqual: viewA]
Run Code Online (Sandbox Code Playgroud)