2011-11-15 17 views
7

Me gustaría codificar un estante y no quiero pensar en cambiar el tamaño y cambiar las imágenes de fondo en una rotación y dependiendo del tamaño de pantalla (iPad/iPhone). ¿Es posible crear una imagen que se estire horizontalmente pero se repita verticalmente? Por ahora, solo he encontrado el [UIColor colorWithPatternImage:] y el [UIImage strechableImageWithLeftCapWidth:topCapHeight:] o el nuevo [UIImage resizableImageWithCapInsets:]. Pero no pude dejarlos trabajar juntos, obviamente.Estirable y Patrón UIImage al mismo tiempo

espero que el ejemplo ayuda a entender mi problema:

Illustration

¿Tiene alguna idea de cómo llevar a cabo lo anterior, por lo que va a trabajar con una sola imagen para diferentes tamaños y orientaciones? ¡Gracias!

+0

Sólo por curiosidad, ¿Qué tipo de resultado obtienes para '[UIColor colorWithPatternImage: [UIImage resizableImage ...]]'? –

+0

La imagen no se estira ni cambia de tamaño, solo se repite durante x e y. – denbec

+0

Bonitas sombras debajo de las revistas :) ¿Se dibujaron o usaron CA? – Shmidt

Respuesta

2

[UIColor colorWithPatternImage:] puede ocupar una cantidad extrema de memoria cuando se trabaja con una gran cantidad de filas. Terminé creando una única vista de imagen que era una fila más grande que toda la vista usando [UIColor colorWithPatternImage:], luego desplacé esa vista hacia arriba o hacia abajo en una fila cuando era necesario cuando la vista estaba a punto de desplazarse fuera de la pantalla. Como la vista solo se mueve en los límites de las filas, el rendimiento fue mucho mejor de lo que esperaba.

Sin embargo, una mejor opción sería la creación de un grupo de individuo UImageViews usando [UIColor colorWithPatternImage:] y teja ellos, similar a lo que hace la voluntad UITableView celdas de la vista tabla.

Apple tiene código de ejemplo que ilustra esta técnica en el proyecto de ejemplo ScrollView Suite y el desplazamiento Aplicaciones Diseñando con vistas de vídeo desde la WWDC 2010.

0

Por qué no utilizar una imagen estirable de un estante y luego configurarlo como fondo para cada celda en la vista de tabla?

EDIT:

Mi conocimiento de AQGridView es limitado, pero suena como usted podría conseguir acceso a cada uno 'de la red baldosas' individual.

tratar de tener tres imágenes por fila: - La imagen de la baldosa más cuadrícula de la izquierda para mostrar la esquina izquierda de la plataforma - La imagen de la parte central de la plataforma que se aplica a todas las fichas excepto para el primer y la última ficha - La imagen de la cuadrícula de la cuadrícula más a la derecha para mostrar la esquina derecha de su estante.

Además, probablemente debería mencionar que está usando AQGridView en su pregunta para que otros usuarios no piensen que está utilizando un UITableView.

+0

porque estoy usando celdas de cuadrícula [AQGridView] (https://github.com/AlanQuatermain/AQGridView) y no filas ... :( – denbec

3

También necesitaba configurar el fondo UIView desde la imagen y cambiar su tamaño al mismo tiempo. Lo que hice fue:

  1. imagen creada dentro del marco de mi tamaño de la vista
  2. programar una vista de fondo utilizando [UIColor colorWithPatternImage:(UIImage*)]

Y aquí está el código:

UIGraphicsBeginImageContext(self.followView.frame.size); 
[[UIImage imageNamed:@"background_content.png"] drawInRect:self.followView.bounds]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
UIColor *bgColor = [UIColor colorWithPatternImage:image]; 

[followView setBackgroundColor:bgColor]; 
Cuestiones relacionadas