El tutorial usa este método con dos parámetros: image
y maskImage
, estos debes establecerlos cuando llames al método. Un ejemplo de llamada podría verse así, asumiendo que el método está en la misma clase y las imágenes están en su paquete:
Nota: sorprendentemente, las imágenes ni siquiera tienen que ser del mismo tamaño.
...
UIImage *image = [UIImage imageNamed:@"dogs.png"];
UIImage *mask = [UIImage imageNamed:@"mask.png"];
// result of the masking method
UIImage *maskedImage = [self maskImage:image withMask:mask];
...
- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
CGImageRef maskRef = maskImage.CGImage;
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef maskedImageRef = CGImageCreateWithMask([image CGImage], mask);
UIImage *maskedImage = [UIImage imageWithCGImage:maskedImageRef];
CGImageRelease(mask);
CGImageRelease(maskedImageRef);
// returns new image with mask applied
return maskedImage;
}
Después de que proporcionó su código, agregué algunos números como comentarios para referencia. Aún tienes dos opciones. Todo esto es un método, al que estás llamando en alguna parte. No es necesario crear las imágenes que contiene: esto reduce la reutilización del método a cero.
Para que su código funcione. Cambie el encabezado de métodos ( 1. ) a
- (UIImage *)maskImageMyImages {
Luego cambie el nombre de la variable en 2. a
UIImage *maskImage = [UIImage imageNamed:@"mask.png"];
El método devolverá sus imágenes enmascaradas, por lo que tendrá que llamar a este método en algún lugar. ¿Puede mostrarnos el código donde está llamando a su método?