Impedir que UIScrollView mueva los contenidos a la parte superior izquierda

Tengo una UIImageView contenida dentro de una UIScrollView . La image es (por lo general) grande, por lo que el usuario puede networkingucirla para ver todo el asunto.

Sin embargo, al hacer un zoom, UIScrollView ajusta el ImageView a la esquina superior izquierda de la vista de desplazamiento. Quiero que el usuario pueda posicionarlo, y aún no he encontrado una forma de "apagarlo".

Es algo así como siempre permitir el desplazamiento, en lugar de solo permitir el desplazamiento cuando la image se amplía. Tal vez sea demasiado importante para un cambio?

¿Alguien sabe de alguna manera? Originalmente, solo iba a crear esta funcionalidad de forma manual. Pero a UIImageViews no le gusta adaptarse a los nuevos tamaños (he intentado todo y no UIImageView cambiar el tamaño de UIImageView MENOS UIImageView elimine la image de imageView , cambie el marco y vuelva a agregarlo).

Terminé deshabilitando panGestureRecognizer UIScrollView y panGestureRecognizer en uno personalizado.

Aquí hay un fragment rápido sobre cómo desactivarlo:

 // Disable our GestureRecognizer for (UIGestureRecognizer *gesture in scrollView.gestureRecognizers){ if ([[NSString stringWithFormat:@"%@",[gesture class]] isEqualToString:@"UIScrollViewPanGestureRecognizer"]){ [gesture setEnabled:NO]; break; } } 

Un poco de trabajo de hack allí, pero es debido a que UIScrollViews ha cambiado la class de GestureRecognizer a "UIScrollViewPanGestureRecognizer". El comstackdor te gritará si intentas usar esa class (probablemente haya una mejor solución).

Si ubica el UIImageView en la location 0,0 en el UIScrollView , entonces siempre va a estar en la UIImageView superior izquierda. Si quiere que se centre en la vista de desplazamiento cuando es más pequeño que la vista, debe ubicarlo allí. Compruebe si su -size es mayor o menor que el de la vista de desplazamiento. Si es más pequeño que la vista de desplazamiento, establezca su -center para que sea el mismo que el scrollview.

Mira mi respuesta en una pregunta similar aquí