sombra de UIButton personalizada
Frecuentes
Visto 1,872 veces
0
he redondeado rect UIButton y quiero agregarle sombra, pero cuando configuro la imagen de fondo, la sombra no es visible, creo que el fondo se superpone a la sombra. sin imagen de fondo la sombra es visible
customBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
customBtn.frame=CGRectMake(customBtn.frame.origin.x, customBtn.frame.origin.y, 30, 30);
[customBtn setImage:[UIImage imageNamed:@"icon.png"] forState:UIControlStateNormal];
[customBtn setBackgroundImage:[[UIImage imageNamed:@"bg.png"] stretchableImageWithLeftCapWidth:0 topCapHeight:0] forState:UIControlStateNormal];
customBtn.layer.cornerRadius=9;
customBtn.layer.shadowColor = [UIColor redColor].CGColor;
customBtn.layer.shadowOpacity = 1.0;
customBtn.layer.shadowRadius = 1;
customBtn.layer.shadowOffset = CGSizeMake(2.0f, 2.0f);
customBtn.clipsToBounds=YES;
1 Respuestas
1
Debido a la estructura interna de UIButton
, su mejor opción es crear una imagen de fondo estirable que incluya la sombra.
UIImage *bgWithShadow = [[UIImage imageNamed: @"bg.png"]
stretchableImageWithLeftCapWidth: 10
topCapHeight: 0];
[customBtn setBackgroundImage: bgWithShadow
forState: UIControlStateNormal];
Este ejemplo asume que bg.png
es una imagen de 21 píxeles de ancho que incluye una sombra. Básicamente, no tienes que hacer nada más como acceder a la capa del botón o cambiar su clipsToBounds
propiedad. Ver esta pregunta para tener una idea de lo que es una imagen extensible (¡con imágenes!).
Tenga en cuenta que stretchableImageWithLeftCapWidth:topCapHeight:
está siendo desaprobado a favor de resizableImageWithCapInsets:
.
contestado el 23 de mayo de 17 a las 11:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas ios cocoa-touch uibutton calayer or haz tu propia pregunta.
intente eliminar clipToBounds=YES (o configúrelo en NO) - giorashc