2009-12-02 11 views
17

Creé un UIScrollView con zoom y le agregué 100 subvistas (en mosaico). La vista se desplaza perfectamente a izquierda y derecha. Sin embargo, me gustaría permitir el zoom.Acercamiento correcto a un UIScrollView que contiene muchas subvistas

Para ello leí que mi delegado tiene que aplicar:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { 
    return ???; 
} 

he visto ejemplos que tienen sólo una subvista a ampliar, por lo que regresan que subvista en ese método. En mi caso, sin embargo, tengo mucho más. ¿Cuál es la forma correcta de hacer el zoom?

Intenté crear otra UIView y agregar las 100 subvistas a esa. Y luego devuelvo esa vista en el método anterior, pero no funciona (amplía pero una vez que se detiene, ya no es interactivo).

+0

¿Ha intentado devolver el mismo UIScrollView? – fbrereto

+0

Sí, fue lo primero que intenté. También estropeó las cosas ... – Dimitris

Respuesta

40

Exactamente,

Esto es lo que Apple también está mencionando en el Scroll View Programming Guide:

Basta con crear una vista, añadir todos los subvistas a este punto de vista y añadir la vista recién creada como una sola vista secundaria a la ScrollView. ..

Luego, en el método delegado viewForZoomingInScrollView devolver el objeto en el índice 0:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{ 
    return [self.scrollView.subviews objectAtIndex:0]; 
} 
2

que creó la vista en la que he añadido todo usando:

UIView *zoomableView = [[UIView alloc] init]; 

sin establecer su marco.

El problema se solucionó cuando, después de agregar todas las subvistas, establecí su marco en algo lo suficientemente grande como para acomodar todas las subvistas en mosaico.

+0

funcionó para mí también: estableciendo el tamaño de fotograma de la vista padre para el tamaño de fotograma máximo de sus subvistas (que era el tamaño de imagen en mi caso). – Yony

0

hav e para devolver lo que va a agregar vistas a la vista de desplazamiento como una subvistas.

Ej: Si está agregando vista de la imagen para desplazarse vista a continuación, escribir

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{ 
return imageView object; 
} 
Cuestiones relacionadas