Tengo un UIScrollView en el que el desplazamiento vertical solo está habilitado. Estoy mostrando una grilla de botones (similar a la cuadrícula de la imagen del visor de fotos). La cuadrícula se debe dibujar de forma diferente en función de la orientación de la pantalla, de modo que se utilice todo el espacio de la pantalla. Dado el tamaño de mis botones, puedo poner 3 por fila en el retrato y 4 por fila en el paisaje.UIScrollView se desplaza automáticamente hacia arriba después de SetContentSize durante el cambio de orientación. ¿Cómo puedo evitarlo?
Reubico todos los botones en: willRotateToInterfaceOrientation: duration y luego call: setContentSize: en mi UIScrollView. Todo parece funcionar bien, con la excepción del desplazamiento automático que ocurre después de la llamada a SetContentSize :. En otras palabras, digamos que estaba en retrato, y recorrí 3/4 del camino hacia abajo en la lista, cuando giro en horizontal, se desplaza automáticamente por toda la copia de seguridad hacia arriba.
Lo interesante es que, en el mismo escenario, si tuviera que hacer una pequeña película hacia arriba o hacia abajo, y luego girar inmediatamente el dispositivo, ¡la vista de desplazamiento se redibuja correctamente y conserva la posición de desplazamiento actual!
Por lo tanto, para ser claros, el culpable aquí parece ser SetContentSize :, pero obviamente tengo que llamar para que la vista de desplazamiento se desplace correctamente.
¿Alguna idea sobre cómo puedo mantener la posición de desplazamiento actual?
Gracias!
Esto no tiene' t trabajo. Esto tiene el mismo efecto que usar: scrollView.scrollsToTop = NO; Lo cual, sí, evita que el desplazamiento automático llegue a la parte superior cuando tocas la barra de estado; sin embargo, el comportamiento que describí en mi pregunta original aún persiste ... – bpatrick100
Otra idea: antes de llamar a 'setContentSize:', recuerda dónde en el contenido que eres, luego de esa llamada, llama a 'setContentOffset:'. Puede ser que cuando se establece el tamaño del contenido, el desplazamiento del contenido se reinicie a propósito (0,0). Es posible que haya restablecido el tamaño del contenido a algo que ya no incluye el offset de contenido antes de restablecer el tamaño. Por lo tanto, el SDK quizás se esté protegiendo a sí mismo y a la experiencia del usuario hasta cierto punto al garantizar que siempre se muestre algo después de que cambie el tamaño de un contenido. –