Я знаю, что есть много вопросов о маске, но ответы на них мне не помогли (только частично).
Мне нужно сделать мой образ круглым. Я создал mask.png и использую его в коде:
- (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 masked = CGImageCreateWithMask([image CGImage], mask);
UIImage* maskedImage = [UIImage imageWithCGImage:masked];
CGImageRelease(masked);
CGImageRelease(mask);
return maskedImage;
}
Все было великолепно, и все были счастливы. Но когда я начал тестировать этот метод на устройстве, я обнаружил, что он не маскирует мое изображение (в симуляторе все работает нормально). Как я могу замаскировать свое изображение?
P.S. Временно я выбрал view.layes.mask как слой с моей маской. И этот вариант работает на устройстве. Может быть есть какой-нибудь способ сохранить раунд из этого слоя?