Как удалить прозрачную область UIImageView после маскировки?
В одном из моих приложений для iOS я пытаюсь вырезать часть изображения, используя CGImageMask
, Мне удалось замаскировать изображение с помощью следующего кода:
- (UIImage *)maskImage:(UIImage *)referenceImage 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 masked = CGImageCreateWithMask([referenceImage CGImage], mask);
return [UIImage imageWithCGImage:masked];
}
Итак, мое изображение будет:
myImageView.image = [self maskImage:[UIImage imageNamed:@"image.png"]
withMask:[UIImage imageNamed:@"mask.png"]];
Проблема: выходное изображение имеет тот же размер, что и эталонное изображение ('image.png') с прозрачной областью вокруг. Но я хочу избежать этой прозрачной области и обрезать полученное изображение. Как мне этого добиться? Существует несколько масок, и рамки масок не одинаковы для всех. Я прилагаю справочное изображение обзора проблемы здесь. Пожалуйста, помогите мне, друзья. Заранее спасибо.
1 ответ
Решение
Посмотрите автообрезку UIImage. Это должно вырезать что-нибудь прозрачное.