자습서에서는이 메서드를 두 개의 매개 변수와 함께 사용합니다. image
및 maskImage
, 메서드를 호출 할 때 설정해야합니다. 메서드가 동일한 클래스에 있고 사진이 번들에 있다고 가정하면 예제 호출은 다음과 같습니다.
참고-놀랍게도 이미지가 같은 크기 일 필요도 없습니다.
...
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;
}
코드를 제공 한 후 참조를 위해 주석으로 몇 가지 번호를 추가했습니다. 여전히 두 가지 옵션이 있습니다. 이 모든 것은 당신이 어딘가에서 호출하고있는 메서드입니다. 내부에 이미지를 만들 필요가 없습니다. 이렇게하면 메서드의 재사용 가능성이 0으로 줄어 듭니다.
코드를 작동 시키려면. 메소드 헤드 ( 1. )를
- (UIImage *)maskImageMyImages {
그런 다음 2 의 변수 이름 을
UIImage *maskImage = [UIImage imageNamed:@"mask.png"];
이 메서드는 마스크 된 이미지를 반환하므로 어떤 위치에서이 메서드를 호출해야합니다. 메서드를 호출하는 코드를 보여줄 수 있습니까?