Pregunta

Android tiene una buena forma de definir las imágenes extensibles llamadas de nueve parche. Ver estos documentos para una descripción del concepto . La idea es rodear una imagen PNG con un borde de 1 píxel donde se pueden definir las zonas estirables y las dimensiones de relleno de la imagen. Esto es absolutamente brillante y me gustaría usar la idea en mi aplicación para el iPhone. Antes de escribir mi propia nueve parche para UIImage cargador pensé que vería si ya existe. Google no arrojó ningún resultado, así que no tengo muchas esperanzas, pero no hace daño a preguntar, ¿verdad? : -)

Editar Amigos, aprecian las respuestas, pero lo que sé sobre stretchableImageWithLeftCapWidth.... Busco código que toma una ruta @"foo.9.png" y devuelve un UIImage estirable. Este código, sin duda utilizará stretchableImageWithLeftCapWidth... internamente. Estoy seguro de que podría escribir el código de mí mismo usando ese método. Pero yo estoy preguntando si alguien ya lo ha hecho.

¿Fue útil?

Solución

He recibido un correo electrónico de software de Tortuga22 que me informó de que han creado una biblioteca tal y liberado bajo la licencia Apache:

Anuncio: http://blog.tortuga22.com / 2010/05/31 / anunciando-tortuga-22-ninepatch /

Código Fuente: http://github.com/tortuga22/Tortuga22-NinePatch

Ejemplo de uso:

// loads-and-caches ninepatch and rendered image of requested size
UIImage buttonImg = [TUNinePatchCache imageOfSize:buttonSize 
                                forNinePatchNamed:@"buttonNormalBackground"];
[self.buttonNeedingBackground setImage:buttonImg
                       forControlState:UIControlStateNormal];

Otros consejos

También mirar la propiedad contentStretch de UIView. Es más robusto y de buen comportamiento que stretchableImageWithLeftCapWidth. Básicamente, funciona con sólo definir el rectángulo estirable dentro de su imagen y crear automáticamente una escala de nueve parche. Este rectángulo interno puede ser cualquier cosa - que ni siquiera tiene que estar en el centro de la imagen. Además a diferencia de stretchableImage este método se reducirá adecuadamente gráficos y comportarse como se espera para los gráficos con la iluminación o brillo. No puedo pensar en cualquier aplicación en el mundo real en el que quiera más que esto.

UIImage soporta algo por el estilo. Ver

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight y la documentación de leftCapWidth y topCapHeight

básicamente, la imagen no se estira en el área de píxeles leftCapWidth desde el borde izquierdo y derecho y los píxeles topCapHeight desde la parte superior y la parte inferior. Cuando la imagen se escala el área dentro de estos límites está sujeta a estiramiento.

Todas las imágenes UIImage soportan de forma nativa. Por defecto enteras las imágenes es estirable, pero se pueden establecer las tapas con las propiedades leftCapWidth y topCapHeight o puede generar uno de un UIImage existente con el método - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight.

Ten en cuenta que en la ejecución de la manzana, al configurar uno o ambos de estos valores, la zona estirable se ve obligado a ser un solo píxel de alto / ancho.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top