¿Hay un cargador de nueve parches para el iPhone?

Android tiene una buena forma de definir imágenes extensibles llamadas nueve parches. Vea 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 áreas extensibles y las dimensiones de relleno de la imagen. Esto es absolutamente brillante y me gustaría usar la idea en mi aplicación de iPhone. Antes de escribir mi propio parche nueve a UIImage loader pensé que vería si uno ya existe. Google no devuelve ningún resultado por lo que no tengo mucha esperanza, pero no duele preguntar, ¿verdad? Todos los derechos reservados

EDIT: Gente, agradezco las respuestas, pero sé de stretchableImageWithLeftCapWidth... Estoy buscando el código que toma un camino @"foo.9.png" y devuelve un UIImage estirables. Este código sin duda utilizará stretchableImageWithLeftCapWidth... internamente. Estoy seguro de que podría escribir el código yo mismo usando ese método. Pero estoy preguntando si alguien más ya lo ha hecho.

Recibí un correo electrónico de Tortuga22 software que me informó que han creado tal biblioteca y lo lanzó bajo la licencia de Apache:

Anuncio: http://blog.tortuga22.com/2010/05/31/announcing-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]; 

También busque en la propiedad contentStretch de UIView. Es más robusto y bien comportado que stretchableImageWithLeftCapWidth. Básicamente, funciona definiendo el rectángulo extensible dentro de la imagen y creando automáticamente un patch de nueve escala. Este rectángulo interno puede ser cualquier cosa – ni siquiera tiene que estar en el centro de la imagen. Además, a diferencia de stretchableImage, este método reducirá correctamente los gráficos y se comportará como se espera para los gráficos con iluminación o brillo. No puedo pensar en ninguna aplicación del mundo real donde desearía más que esto.

UIImage apoya algo parecido. 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 leftCapWidth píxeles de los bordes izquierdo y derecho y topCapHeight píxeles de la parte superior e inferior. Cuando la imagen se escala, el área dentro de estos límites está sujeta a estiramiento.

Todas las imágenes de UIImage soportan esto de forma nativa. De forma predeterminada, las imágenes enteras se pueden estirar, pero puede establecer tapas con las propiedades leftCapWidth y topCapHeight o puede generar una de una UIImage existente con el método - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight .

Tenga en cuenta que en la aplicación de Apple, cuando se establece uno o ambos de estos valores, el área extensible se ve obligado a ser un solo píxel alto / ancho.

  • ¿Es posible utilizar varias imágenes de parche dentro de LayerDrawable?
  • Cuándo utilizar 9-Patch
  • Android: la imagen de 9 parches no se estira como se esperaba
  • Imagen de nueve parches para dibujar 1 borde de píxeles alrededor de TextView
  • Nueve parches en un grupo de vistas personalizado
  • Utilidad de android nueve parche
  • Cómo reasignar una imagen de 9 parches mediante programación a un ImageView?
  • Dimensiones extraíbles de 9 parches Android. ¿Cómo manejan las diferentes densidades las áreas no estiradas?
  • Significado de color rojo en Nine-patch de Android
  • Android Puede utilizar nueve imágenes de parche en lugar del hdpi, mdpi, ldpi
  • Android nueve patch no se reconoce en el dispositivo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.