表示されているUIView
(またはUIView
サブクラス) がある場合、それが現在画面に表示されているかどうか (たとえば、現在画面外にあるスクロール ビューのセクションにあるのとは対照的に) をどのように確認できますか?
私の言いたいことをよりよく理解できるようにUITableView
、現在表示されているセルのセットを決定する方法がいくつかあります。特定のUIView
.
表示されているUIView
(またはUIView
サブクラス) がある場合、それが現在画面に表示されているかどうか (たとえば、現在画面外にあるスクロール ビューのセクションにあるのとは対照的に) をどのように確認できますか?
私の言いたいことをよりよく理解できるようにUITableView
、現在表示されているセルのセットを決定する方法がいくつかあります。特定のUIView
.
これはまだ試していません。しかしCGRectIntersectsRect()
、ここでは基本的な構成要素のようです-[UIView convertRect:to(from)View]
。-[UIScrollView contentOffset]
UIScrollViewでどのUIViewが表示されているかを確認するために使用したものは次のとおりです。
for(UIView* view in scrollView.subviews) {
if([view isKindOfClass:[SomeView class]]) {
// the parent of view of scrollView (which basically matches the application frame)
CGRect f = self.view.frame;
// adjust our frame to match the scroll view's content offset
f.origin.y = _scrollView.contentOffset.y;
CGRect r = [self.view convertRect:view.frame toView:self.view];
if(CGRectIntersectsRect(f, r)) {
// view is visible
}
}
}
ビュー階層にないオブジェクトを解放することを主に心配している場合は、次のように、スーパービューがあるかどうかをテストできます。
if (myView.superview){
//do something with myView because you can assume it is on the screen
}
else {
//myView is not in the view hierarchy
}
最近、自分のビューが画面上にあるかどうかを確認する必要がありました。これは私のために働いた:
CGRect viewFrame = self.view.frame;
CGRect appFrame = [[UIScreen mainScreen] applicationFrame];
// We may have received messages while this tableview is offscreen
if (CGRectIntersectsRect(viewFrame, appFrame)) {
// Do work here
}