UIViewControllerがあります。ルートUIViewには、グリッドにサムネイル画像を表示するために使用しているカスタムUIScrollViewが含まれています(ThumbnailGridクラス)。このグリッドには、画像を表示する多くのUIViewを含めることができます(GridTileクラス)。グリッドタイルが非常に多いため、ユーザーはThumbnailGridを下にスクロールできます。ユーザーが実際に見ることができるグリッドタイルの画像のみをロードしたいのですが、画面の端から外れたグリッドタイルの画像はロードしたくありません。
これらのGridTileUIViewの1つが画面に表示されているかどうかを確認するにはどうすればよいですか?
私は以下を試しましたが、常に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;
}