Изображение маски для округления в iOS - PullRequest
1 голос
/ 01 февраля 2012

Я знаю, что есть много вопросов о маске, но ответы на них мне не помогли (только частично).

Мне нужно сделать мой образ круглым. Я создал 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 как слой с моей маской. И этот вариант работает на устройстве. Может быть есть какой-нибудь способ сохранить раунд из этого слоя?

1 Ответ

1 голос
/ 23 апреля 2016

Не нужно делать все эти вещи, если все, что вам нужно, это круглая картинка.

UIImageView * myimageview = [[UIImageView alloc]init];
myimageview.layer.cornerRadius = myimageview.frame.size.height;
myimageview.layer.masksToBounds = true;

используйте приведенный выше код и установите любое изображение для этого изображения, и вы получите круглое изображение. здесь вы не делаете изображение округлым, а видите изображение.

...