sombra de UIButton personalizada

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;

preguntado el 03 de mayo de 12 a las 08:05

intente eliminar clipToBounds=YES (o configúrelo en NO) -

1 Respuestas

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 or haz tu propia pregunta.