有没有办法知道视图何时可以被用户看到?
有没有办法知道视图何时可以被用户看到?有没有办法知道视图何时可以被用户看到?
例如:如果我有2次,而其中一个被“隐藏”在其他 -
我怎么能告诉大家,“隐藏”的观点目前还没有显示在屏幕上,
和我怎样才能查看它何时再次可见?
谢谢。
我会假设你是指在同一窗口中的两个视图。如果视图在其框架之外绘制,那么当clipsToBounds为NO时,任何视图都可以执行,那么您将必须获得视图内容的真实边界框。
如果你有相同的父视图两个视图,你想看看他们是否相交,你可以使用以下命令:
CGRect frame1 = [view1 frame];
CGRect frame2 = [view3 frame];
CGRectIntersectsRect(frame1 , frame2);
如果两个视图不具有相同的父,那么你将有找到的两种观点并使用共同的父:
CGRect frame1 = [parent convertRect:[view1 frame] fromView:view1];
CGRect frame2 = [parent convertRect:[view2 frame] fromView:view2];
如果你想知道的意见完全重合,而不是他们是否重叠一点,然后用这个来代替CGRectIntersectsRect:
CGRectContainsRect(frame1 , frame2) || CGRectContainsRect(frame2 , frame1)
如果这两个视图不是不透明的,那么即使它们的帧相交视图的内容也可能不是。指出这完全取决于意见的具体内容。
一旦您发现视图确实重叠,您可以通过检查[父子视图]并查看哪个视图具有较高的索引来确定哪一个是最重要的。如果任一视图不是父视图的直接子视图,则可以遍历子视图并使用isDescendantOfView查找该订单。
要了解视图是否隐藏在一般情况下,您可以将它与具有较高z顺序的每个其他视图进行比较。视图的z顺序与子视图数组中的索引相同,因此索引2处的子视图比索引1处的子视图具有更高的z顺序。从视图的父级开始,然后提升视图层级。
的UIView的
– viewWillAppear:
通知视图控制器,其观点是将要成为visible.It意味着每个视图即将出现这个方法会被自动调用
同样的方式
时间- (void)viewWillDisappear:(BOOL)animated
委托方法将在视图即将被解散,覆盖或以其他方式隐藏视图时自动调用(仅在隐藏之前)
我想到了一个办法,如果它会工作,我会评论它 -
通过得到“上面”我的看法层次各方面的意见,
,并检查他们的阿尔法和rects看如果他们隐藏我的观点。
希望它会工作
检查,看是否视图是最顶尖的观点是不准确的,因为有可能是在屏幕上的其他看法的意见层次结构的顶部的情况 - 没有隐藏了这一观点。 – Shay 2010-04-13 07:52:01