Pregunta

tengo un UIScrollView que contiene un UIImageView y tengo algunos problemas para conseguir el comportamiento correcto al girar el iPhone.

Objetivo: Estoy tratando de obtener la siguiente cuando se pasa de vertical a horizontal:

_________
|AAAAAAA|
|BBBBBBB|         _________________
|CCCCCCC|         |     AAAAAA     |
|DDDDDDD|    -->  |     CCCCCC     |
|EEEEEEE|         |     EEEEEE     |
|FFFFFFF|         |_____GGGGGG_____|
|GGGGGGG|
---------

A continuación, toda la imagen en la vista vertical se escala para caber en la vista horizontal al girar el iPhone. También está centrado. También estoy tratando de conservar la relación de aspecto. La interacción del usuario también está activado, y el usuario debe ser capaz de utilizar toda la pantalla a la cacerola / acercar o alejar la imagen.

Actualmente tengo el siguiente autoresizingMask en el ScrollView:

 scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth |
                               UIViewAutoresizingFlexibleHeight);       

Pero esto da la siguiente

_________
|AAAAAAA|
|BBBBBBB|         _________________
|CCCCCCC|         |AAAAAA          |
|DDDDDDD|    -->  [BBBBBB          |
|EEEEEEE|         [CCCCCC          |
|FFFFFFF|         [DDDDDD__________|
|GGGGGGG|
---------

Esta escala conservas de ajuste y desplazamiento desde la esquina superior izquierda.

Pregunta: ¿Es posible obtener este comportamiento utilizando autoresizingMask adecuada? Si no es así, uno debe fijar probablemente

 scrollView.autoresizingMask = UIViewAutoresizingNone;

y manualmente conjunto zoomScale y contentOffset para la UIScrollView en la rotación. Sin embargo, cuando esta se debe hacer? ¿Qué pasa con la animación de ese cambio?

Solución: Modificando ligeramente por debajo de la respuesta que me dieron el comportamiento anterior usando el siguiente código:

imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
                                     UIViewAutoresizingFlexibleHeight);

scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth 
                                     | UIViewAutoresizingFlexibleHeight);

imageView.contentMode = UIViewContentModeScaleAspectFit;
scrollView.contentMode = UIViewContentModeCenter;
¿Fue útil?

Solución

Prueba esto:

scrollView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
                           UIViewAutoresizingFlexibleHeight);    
imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
                           UIViewAutoresizingFlexibleHeight);

imageView.contentMode = UIViewContentModeAspectFit; // You could also try UIViewContentModeCenter

No estoy seguro de si el imageView conseguirá redimensionada automáticamente dentro de un UIScrollView, por lo que si el cambio de tamaño automático no funciona, usted podría tratar de establecer el marco de sí mismo en rotación para igualar el tamaño de la ScrollView.

Otros consejos

Yo tenía una situación similar, un muy simple ScrollView con 3 imageViews ( 'anterior', 'corriente' y 'siguiente') para mostrar una serie de fotos.

Las fotos fueron dimensionados para el IPAD, sino una mezcla de paisaje y retrato orientaciones. Quería que encajan en la pantalla, (es decir letterboxed si es necesario), la relación de aspecto retenido. Me di cuenta de que sólo se necesitaba hacer esto a los 3 imageViews para que funcione:

imageView.contentMode = UIViewContentModeScaleAspectFit;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top