11

表示されているUIView(またはUIViewサブクラス) がある場合、それが現在画面に表示されているかどうか (たとえば、現在画面外にあるスクロール ビューのセクションにあるのとは対照的に) をどのように確認できますか?

私の言いたいことをよりよく理解できるようにUITableView、現在表示されているセルのセットを決定する方法がいくつかあります。特定のUIView.

4

4 に答える 4

11

これはまだ試していません。しかしCGRectIntersectsRect()、ここでは基本的な構成要素のようです-[UIView convertRect:to(from)View]-[UIScrollView contentOffset]

于 2008-09-28T02:35:55.457 に答える
2

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
        }
    }
}
于 2013-05-26T06:04:20.340 に答える
1

ビュー階層にないオブジェクトを解放することを主に心配している場合は、次のように、スーパービューがあるかどうかをテストできます。

if (myView.superview){
 //do something with myView because you can assume it is on the screen
}
else {
 //myView is not in the view hierarchy
}
于 2013-01-07T23:46:02.730 に答える
0

最近、自分のビューが画面上にあるかどうかを確認する必要がありました。これは私のために働いた:

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
}
于 2012-08-08T00:15:39.850 に答える