У меня есть UIImageView
, который можно перемещать/масштабировать (self.imageForEditing
). Поверх этого изображения у меня есть наложение с вырезанным отверстием, которое статично и не может быть перемещено. Мне нужно сохранить только ту часть основного изображения, которая видна через отверстие в момент нажатия кнопки. Моя текущая попытка:
- (IBAction)saveImage
{
UIImage *image = self.imageForEditing.image;
CGImageRef originalMask = [UIImage imageNamed:@"picOverlay"].CGImage;
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(originalMask),
CGImageGetHeight(originalMask),
CGImageGetBitsPerComponent(originalMask),
CGImageGetBitsPerPixel(originalMask),
CGImageGetBytesPerRow(originalMask),
CGImageGetDataProvider(originalMask), nil, YES);
CGImageRef maskedImageRef = CGImageCreateWithMask(image.CGImage, mask);
UIImage *maskedImage = [UIImage imageWithCGImage:maskedImageRef scale:image.scale orientation:image.imageOrientation];
CGImageRelease(mask);
CGImageRelease(maskedImageRef);
UIImageView *test = [[UIImageView alloc] initWithImage:maskedImage];
[self.view addSubview:test];
}
В качестве теста я просто пытаюсь добавить вновь созданное изображение в верхний левый угол экрана. Теоретически это должно быть маленькое круглое изображение (та часть, которая была видна через оверлей). Но я просто снова создаю весь образ. Что я делаю неправильно? И как я могу объяснить тот факт, что self.imageForEditing
можно перемещать?