2012-06-04 12 views
14

¿Cuál es la forma más fácil y más elegante de verificar si una UIView es visible en el contenidoViewView de UIScrollView actual? Hay dos formas de hacerlo, una implica la posición contentOffset.y del UIScrollView y la otra es convertir el área rect?compruebe si UIView está en estado visible UIScrollView

Respuesta

1

Creo que sus ideas son correctas. si fuera yo lo haría de la siguiente manera:

//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

Implementar scrollViewDidScroll: en la vista de desplazamiento delegado y calcular manualmente el que las opiniones son visibles (por ejemplo, comprobando si CGRectIntersectsRect(scrollView.bounds, subview.frame) vuelve verdadera

15

si usted está tratando. de averiguar si un punto de vista ha sido desplazado en la pantalla, intente esto:

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

actualizan para 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 
    } 
Cuestiones relacionadas