2012-06-04 13 views
14

Jaki jest najprostszy i najbardziej elegancki sposób, aby sprawdzić, czy UIView jest widoczny na bieżącym contentView UIScrollView? Można to zrobić na dwa sposoby: jednym z nich jest pozycja contentOffset.y w UIScrollView, a drugą metodą jest konwersja obszaru rect?Sprawdź, czy UIView jest w UIScrollView widoczny stan

Odpowiedz

1

Myślę, że twoje pomysły są poprawne. jeśli to ja chciałbym to zrobić w następujący sposób:

//scrollView is the main scroll view 
//mainview is scrollview.superview 
//view is the view inside the scroll view 

CGRect viewRect = view.frame; 
CGRect mainRect = mainView.frame; 

if(CGRectIntersectsRect(mainRect, viewRect)) 
{ 
    //view is visible 
} 
5

Wdrożenie scrollViewDidScroll: w widoku przewijania delegata i obliczyć ręcznie, które widoki są widoczne (na przykład przez sprawdzenie czy CGRectIntersectsRect(scrollView.bounds, subview.frame) zwraca true

15

Jeśli próbujesz. wypracować jeśli widok został przewijane na ekranie, spróbuj tego:

CGRect thePosition = myView.frame; 
    CGRect container = CGRectMake(scrollView.contentOffset.x, scrollView.contentOffset.y, scrollView.frame.size.width, scrollView.frame.size.height); 
    if(CGRectIntersectsRect(thePosition, container)) 
    { 
     // This view has been scrolled on screen 
    } 
0

aktualizowane na szybki 3

var rect1: CGRect! 
// initialize rect1 to the relevant subview 
if rect1.frame.intersects(CGRect(origin: scrollView.contentOffset, size: scrollView.contentSize)) { 
     // the view is visible 
    } 
Powiązane problemy