He echado un vistazo a esta pregunta: UIImage Shadow TroubleCrear nueva UIImage añadiendo a la sombra UIImage existente
Pero la respuesta aceptada no funcionó para mí.
Lo que estoy tratando de hacer es tomar un UIImage y agregarle una sombra, luego devolver un UIImage completamente nuevo, sombra y todo.
Esto es lo que trato:
- (UIImage*)imageWithShadow {
CGColorSpaceRef colourSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef shadowContext = CGBitmapContextCreate(NULL, self.size.width, self.size.height + 1, CGImageGetBitsPerComponent(self.CGImage), 0,
colourSpace, kCGImageAlphaPremultipliedLast);
CGColorSpaceRelease(colourSpace);
CGContextSetShadow(shadowContext, CGSizeMake(0, -1), 1);
CGContextDrawImage(shadowContext, CGRectMake(0, 0, self.size.width, self.size.height), self.CGImage);
CGImageRef shadowedCGImage = CGBitmapContextCreateImage(shadowContext);
CGContextRelease(shadowContext);
UIImage * shadowedImage = [UIImage imageWithCGImage:shadowedCGImage];
CGImageRelease(shadowedCGImage);
return shadowedImage;
}
El resultado es que me sale exactamente la misma imagen que antes de poner a través de este método.
Estoy haciendo esto de la manera correcta, o hay algo obvio que me falta?
¡Perfecto! De hecho, estaba agregando 1 a la altura para dibujar la sombra, pero el resto (configurar la sombra, el sistema de coordenadas volteado) estaba en el blanco. –
¿Dónde se implementaría este código y cómo lo llamarías para agregar una sombra a una imagen? –
El método supone que la clase puede proporcionar una CGImage y sus dimensiones. Puede modificar el método para tomar parámetros (CGImage y CGSize) en su lugar. –