ios uibutton uiimage textures

ios - Estirar imagen de fondo para UIButton



uiimage textures (5)

Al no embaldosar, asumo que no puedes usar

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets

La forma de hacer lo que quieres es usar:

UIGraphicsBeginImageContextWithOptions(newSize, NO, 0); // should be proportionally larger CGContextRef context = UIGraphicsGetCurrentContext(); CGContextDrawImage(context, (CGRect){{0,0}, newSize}, [yourImage CGImage]); UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image;

Tengo textura, que realmente más corta, que mi UIButton.

Tengo esta textura

Y debería crear este botón:

¿Cómo debo estirar (no baldosas), esta textura? Estiramiento en dirección horizontal

Thnx


Con Xcode 6 (y iOS7 + destino) puede usar el editor de corte al trabajar con activos de imágenes. Alterne el modo de corte con Editor -> Mostrar menú de corte o presione el botón Mostrar corte cuando seleccione una imagen específica con el editor (se muestra a continuación).

A continuación, puede seleccionar la imagen para una escala de visualización específica y arrastrar reglas o editar los valores de las inserciones manualmente.

Después de eso, puede seleccionar esta imagen en Interface Builder para UIButton Background Image (la imagen del botón IB podría verse mal, pero debería estar bien cuando se ejecuta).

Mis botones se ven bien (ejecutando simulador de iOS 7.1 y dispositivo iOS 8).

Este link Apple Doc podría ser útil.


O usando imágenes estirables :

UIImage* imgbkg =[[UIImage imageNamed: @"my_bkg_image.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:10]; [_button setBackgroundImage: imgbkg forState: UIControlStateNormal];

Usa 0 si no quieres estirar cierto lado.



A partir de las imágenes de ejemplo que proporcionaste, estoy bastante seguro de que estás buscando la imagen de resizableImageWithCapInsets: UIImage de UIImage resizableImageWithCapInsets:

UIImage *originalImage = [UIImage imageNamed:@"myImage.png"]; UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right); UIImage *stretchableImage = [originalImage resizableImageWithCapInsets:insets]; [myButton setBackgroundImage:stretchableImage forState:UIControlStateNormal]; // the image will be stretched to fill the button, if you resize it.

Los valores en la estructura UIEdgeInsets determinan los márgenes que no desea estirar. Sus valores de izquierda y derecha podrían ser sobre este ancho:

Los valores superior e inferior pueden ser 0 (si no desea cambiar el tamaño del botón verticalmente), o probablemente la mitad de la altura total.