弄清楚UIView / Image目前是否可见

时间:2013-12-06 18:50:41

标签: ios objective-c uiview uiimageview uiimage

有没有办法弄清楚View当前是否可见/当前是否显示在屏幕上?这对于内存处理非常方便。此外,有没有办法查看图像当前是否在屏幕上,所以你不需要一直将它放在内存中,特别是如果当前显示的图像很多。

4 个答案:

答案 0 :(得分:2)

这实际上取决于您如何更改视图和图像视图的可见性。您可以检查hidden属性以查看它是否隐藏,或检查alpha属性是否为0以查看它是否不可见。当你在屏幕上说""听起来您可能会将它们移出窗口的可见边缘,在这种情况下,您可以检查imageView.frame.origin.xy值以查看当前放置的位置。

如果你正在谈论检查是否存在imageView,那就变得更加复杂了。您可以保留一组数据并检查它是否在那里或其他几种方式。

您正在寻找的是其中任何一种吗?如果没有,请考虑编辑您的问题,详细说明您尝试过的内容以及您打算做的事情。

答案 1 :(得分:2)

您将不得不检查所有这些方案。我从来没有见过内置的房产来检查所有这些可能性。只需跟踪您创建,修改和隐藏视图的位置,并在适当的位置将其删除。

检查它是否隐藏:

if (view.hidden)

或检查层次结构:

if (view.superview == nil)

您还可以检查视图的边界以查看它是否在屏幕上。

您还可以检查alpha:

if (view.alpha > 0)

这应该涵盖大多数可能性,否则,请注意。

答案 2 :(得分:0)

这是UITableviewCell吗?如果是这样,tableview将为您管理。

如果视图中您已通过导航或标签栏操作切断,请参阅viewDidDisappear:

如果它在当前视图中,但已移出屏幕,请在图像视图上调用convertRect:toView:并传入主视图,然后检查生成的矩形是否在主视图的边界内视图。移动图像视图后执行此操作。

答案 3 :(得分:0)

您可以执行此操作,假设 <package id="MySql.Data" version="6.9.9" targetFramework="net452" /> <package id="MySql.Data.Entity" version="6.9.9" targetFramework="net452" /> <package id="MySql.Web" version="6.9.9" targetFramework="net452" /> 是您要检查其当前是否在屏幕上的视图。

myCustomView