У навчальному посібнику використовується цей метод з двома параметрами: 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;
}
Після того, як ви надали свій код, я додав деякі номери як коментарі до нього для довідки. У вас є ще два варіанти. Вся ця річ - це метод, який ви кудись дзвоните. Не потрібно створювати зображення всередині нього: це зводить повторно використаний метод до нуля.
Щоб ваш код працював. Змініть голову методів ( 1. ) на
- (UIImage *)maskImageMyImages {
Потім змініть ім'я змінної на 2. до
UIImage *maskImage = [UIImage imageNamed:@"mask.png"];
Метод поверне ваші замасковані зображення, тому вам доведеться викликати цей спосіб десь. Чи можете ви показати нам код, де ви викликаєте свій метод?