2010-04-23 16 views
7

Necesito crear una vista en el iPhone que se desplaza horizontalmente a través de una galería de imágenes. El problema es que esta galería tiene el potencial de tener de 100 a 1000 imágenes que deben presentarse, por lo que me gustaría evitar cargarlas todas en un solo UIScrollView a la vez y destruir el rendimiento. Necesito crear una vista que recicle los objetos de visualización (como UITableView) para aumentar el rendimiento y reducir la sobrecarga de memoria, pero necesita desplazarse horizontalmente.iPhone Mesa de desplazamiento horizontal

¿Alguna idea? ¿Es posible hacer que UITableView funcione horizontalmente?

Gracias!

Respuesta

1

Puede usar una vista de desplazamiento grande, y monitor para cambiar la posición de desplazamiento. Puede agregar imágenes como subvistas a medida que entran en el área visible real y eliminarlas a medida que se desplazan.

De esta manera, solo debe tener un pequeño número de vistas de imágenes presentes en un momento dado, pero da la apariencia de que todas están "allí".

Incluso podría reciclar las vistas de las imágenes cambiando su imagen y ubicación para que no esté creando y destruyendo objetos complejos. Esto es lo que UITableView hace con las celdas.

+0

Gracias por los pensamientos. Esperaba que hubiera una forma de usar un mecanismo de reciclaje en el sistema operativo, y no tener que administrar todo eso en mi propio código ... pero intentaré eso y veré cómo funciona. – Devunwired

+0

Hay una manera de utilizar un UITableViewController, por favor revise mi respuesta debajo de –

0

¿Es posible añadir un UITableView horizontalmente? En una orientación diferente que la pantalla. Luego puede usar la semántica regular de UITableView donde cada fila es una imagen que se desplaza horizontalmente en lugar de verticalmente.

-1

creo que tengo la respuesta para usted acerca de la búsqueda de una UITableView horizontalmente:

  1. crear un UIScrollView (y desactivar el desplazamiento vertical)
  2. poner una UITableView el interior del desplazamiento vista
  3. cambio el ancho de la vista de tabla como desea y actualiza el UIScrollView.contentSize como el mesa ancho de vista
+0

Agregar una vista de tabla no hace que se desplace horizontalmente independientemente del ancho. – David

2

Es tan simple como aplicar una transformación.

Aquí está el código. Escribe esto en el init tableViewController:

self.view.frame = CGRectMake(100,-5,250,350); //any Frame of your choice 
CGAffineTransform trans = self.view.transform; // get current transform (i.e. portrait) 
trans = CGAffineTransformRotate(trans, (M_PI/-2.0)); // rotate 90 degrees to go landscape 
self.view.transform = trans; // set current transform (landscape) 

Pero ahora lo que hay que darse cuenta es que su eje también se intercambian. Cualquier cambio que realice en la altura cambiará el ancho (y viceversa) y cualquier cambio realizado en el origen.x cambiará el origen.y (y viceversa)

+1

Quiere "p.ej" no "es decir" - De [Wikipedia] (http://en.wikipedia.org/wiki/List_of_Latin_abbreviations): "p.ej." es "exempli gratia" ("por ejemplo", "por ejemplo"); "ie" es "id est" ("eso es", "en otras palabras") – Thromordyn

+0

Disculpas. Mi error. Gracias por la corrección @Tromordyn –

0

Publicar una respuesta a este hilo antiguo porque la respuesta validada no es correcto. Puede usar un UITableViewController y sus funciones incorporadas dequeueReusableCellWithIdentifier.

El truco consiste en hacer girar su mesa y luego hacer que su celda gire en la dirección opuesta.

en viewDidLoad va a agregar:

self.view.transform = CGAffineTransformMakeRotation(-M_PI_2); 

Y luego, en cellForRowAtIndexPath se debería utilizar:

cell.containerView.transform = CGAffineTransformMakeRotation(M_PI_2); 

Asegúrese de que todos los contenidos de la celda se añade a una vista contenedor (en este ejemplo containerView) para que solo tenga que girar el contenedor y no cada subvista de celda.

También tenga en cuenta que funcionará mejor con celdas que tengan dimensiones cuadradas, ya que de lo contrario podría tener problemas con el cálculo de altura/ancho.

Cuestiones relacionadas