2012-06-15 15 views
19

Me doy cuenta de que puedo rotar las celdas y mover el indicador mostrando la vista de desplazamiento "al revés", pero eso requiere muchas otras rotaciones y la manipulación de la información para hacer que la tabla se desplace correctamente.¿es posible mover el indicador UIScrollView del lado derecho al izquierdo?

Gracias por el tiempo

+1

Esto debería ser una configuración de todo el sistema para que los usuarios zurdos tienen barras de desplazamiento a la derecha, y los usuarios diestros tienen barras de desplazamiento a la izquierda. He estado diciendo esto desde hace años. – Cyrille

Respuesta

70

En realidad, es posible cambiando la propiedad scrollIndicatorInsets para restringir el indicador a un área pequeña en el lado izquierdo:

tableView.scrollIndicatorInsets = UIEdgeInsetsMake(0,0,0,tableView.bounds.size.width-10); 
+1

Bueno, aunque depende de que su constante "10" coincida con el ancho de la vista de desplazamiento ... técnicamente eso es una suposición insegura, pero prácticamente es factible. – rickster

+0

Para aclarar más, 10 debe ser el ancho del indicador en sí, no la vista de desplazamiento. Creo que esto es lo que @rickster quiso decir. –

+0

Uh, a la derecha. ¡Gracias! – rickster

7

me gusta la solución de Jeremy Jay (aunque no lo han probado), pero solo para explorar a fondo la idea ... aquí hay otra que podría valer la pena intentar (aunque tampoco ha sido probada):

Use dos vistas de desplazamiento.

Una vista de desplazamiento (a esta le llamaremos la "real") contiene su contenido pero tiene sus indicadores ocultos. Otra vista de desplazamiento no contiene contenido pero tiene su contentSize configurado para coincidir con el de la vista de desplazamiento "real". Cuando la vista de desplazamiento "real" contentOffset cambia (como se observa a través de mensajes de delegado), cambie el desplazamiento de la vista de desplazamiento "falso" para que coincida. (Consulte la sesión de vistas de desplazamiento de WWDC 2012 para obtener más información sobre la idea de usar una vista de desplazamiento sin una vista de contenido.)

En teoría (nuevamente, no lo he probado), ahora tiene una vista de indicador de desplazamiento eso es independiente de su vista de desplazamiento original, y puede colocarlo donde desee en relación con el original. Colóquelo encima del original y muévalo/ajústelo de modo que ocupe una hendidura estrecha a la izquierda, y tendrá un indicador de desplazamiento del lado izquierdo. (Alternativamente, colóquelo encima del original y déle la vuelta horizontalmente con una transformación afín.) Póngalo en otro lugar completamente para llevar su UI en un viaje a la ciudad loca. (O no). Sin embargo, asegúrate de hacer que ignore los toques si están superpuestos en la parte superior.

2

Una forma rápida de lograr esto (si no está utilizando acciones de filas) sin tener que calcular inserciones o jugar con vistas de tabla adicionales, sería transformar la vista de tabla en el eje Y (voltear) y luego transformar las células regresan cuando las tienes.

tableView.transform = CGAffineTransformMakeScale(1, -1); 

y luego

cell.transform = CGAffineTransformMakeScale(1, -1); 
Cuestiones relacionadas