Подтвердить что ты не робот

Добавление маски с помощью CALayers

Кажется, у меня возникают трудности с добавлением маски через CALayers. Я просто пытаюсь замаскировать UIImageView. Здесь мой код:

 CALayer *maskLayer = [CALayer layer];
 UIImage *mask = [UIImage imageNamed:@"mask.png"];
 maskLayer.contents = mask;

UIImageView *viewToMask = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
viewToMask.image = [UIImage imageNamed:@"picture.png"];
viewToMask.layer.mask = maskLayer;
[self.view addSubview:viewToMask];

Mask.png черный с прозрачным кругом, пробитым через него (это правильный способ маскировать?). Я не уверен, где это происходит, возможно, в maskLayer.contents, так как он должен быть CGImageRef, но я получаю ошибки, когда устанавливаю его как mask.CGImage или через локальную переменную CGImageRef = mask.CGImage. Во всяком случае, способ, которым его набор теперь не дает ошибок, поэтому я надеюсь, что это будет хорошо.

Кто-нибудь знает, что происходит, или как правильно установить маски с помощью CALayers? Благодаря

4b9b3361

Ответ 1

Try

maskLayer.contents = (id)mask.CGImage;

Да, литой отстой, но это необходимо.


Думаю, вам также нужно будет сказать

maskLayer.bounds = (CGRect){CGPointZero, mask.size};

Ответ 2

попробуйте следующее:

CALayer *maskLayer = [CALayer layer];
UIImage *mask = [UIImage imageNamed:@"mask.png"];
maskLayer.contents = (id)mask.CGImage;
//  maskLayer.contentsGravity = kCAGravityCenter;
maskLayer.frame = CGRectMake(0.0, 0.0,1024,768);

UIImageView *viewToMask = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
viewToMask.image = [UIImage imageNamed:@"picture.png"];
viewToMask.layer.mask = maskLayer;
[self.view addSubview:viewToMask];

вам также нужно установить маску