我有一个 UIViewController。根 UIView 包含一个自定义 UIScrollView,我用于在网格中显示缩略图(ThumbnailGrid 类)。该网格可以包含许多显示图像的 UIView(GridTile 类)。因为有很多网格图块,用户可以向下滚动 ThumbnailGrid。我只想加载用户实际可以看到的网格图块的图像,我不想为屏幕边缘的网格图块加载图像。
如何确定这些 GridTile UIView 之一是否正在屏幕上显示?
我尝试了以下方法,但它似乎总是返回错误。
- (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;
}