【发布时间】:2013-03-06 15:27:32
【问题描述】:
我有一个 UIViewController。根 UIView 包含一个自定义 UIScrollView,我用于在网格中显示缩略图(ThumbnailGrid 类)。该网格可以包含许多显示图像的 UIView(GridTile 类)。因为有很多网格图块,用户可以向下滚动 ThumbnailGrid。我只想加载用户实际可以看到的网格图块的图像,我不想为屏幕边缘之外的网格图块加载图像。
我如何确定这些 GridTile UIView 之一是否正在屏幕上显示?
我尝试了以下方法,但它似乎总是返回 false。
- (bool) isViewDisplayed:(UIView*)view
{
CGRect viewFrame = view.frame;
CGRect appFrame = [[UIScreen mainScreen] applicationFrame];
if (CGRectIntersectsRect(viewFrame, appFrame)) return true;
return false;
}
我错过了什么吗?
提前感谢您的帮助!
编辑
解决方案
原来坐标系是错误的,所以我遇到了一些奇怪的情况,方法应该返回 true,但它返回 false,反之亦然。
- (bool) isViewDisplated:(UIView*)view
{
CGRect viewFrame = [parentOfView convertRect:view.frame toView:nil];
CGRect appFrame = [[UIScreen mainScreen] applicationFrame];
if (CGRectIntersectsRect(viewFrame, appFrame)) return true;
return false;
}
【问题讨论】:
-
ThumbnailGrid 类是您创建的自定义类还是您正在使用的框架?
-
这是我自己制作的 UIScrollView 的子类。它没什么特别的,只是包含了以某种方式操作其子视图的方法。
标签: ios objective-c uiview