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.
Utilice stretchableImageWithLeftCapWidth:topCapHeight:
método.
Consulte: https://github.com/boctor/idev-recipes/tree/master/StretchableImages
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.