verificați dacă UIView este în stare vizibilă UIScrollView

Care este modalitatea cea mai ușoară și mai elegantă de a verifica dacă o vizualizare UIView este vizibilă în conținutul actual al vizualizării UIScrollView? Există două moduri de a face acest lucru, unul implică poziția contentOffset.y a UIScrollView și celălalt mod este de a converti zona rectului?

0

4 răspunsuri

Implementați scrollViewDidScroll: în delegatul vizualizării de defilare și calculați manual care vizualizări sunt vizibile (de exemplu, dacă verificați dacă CGRectIntersectsRect (scrollView.bounds, subview.frame) revine adevărat.

0
adăugat

Cred că ideile tale sunt corecte. dacă aș fi fost eu aș face-o după cum urmează:

//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
}
0
adăugat

Dacă încercați să vă aflați dacă o vizualizare a fost derulată pe ecran, încercați acest lucru:

    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
adăugat

actualizat pentru swift 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
    }
0
adăugat
iOS dezvoltatori, România — Moldova
iOS dezvoltatori, România — Moldova
21 participanți

Parteneri: ciupacabra.com, @php_ro, @js_ro, @node_ro, @seo_ro Android: @ro_android