Ответ 1
Try
maskLayer.contents = (id)mask.CGImage;
Да, литой отстой, но это необходимо.
Думаю, вам также нужно будет сказать
maskLayer.bounds = (CGRect){CGPointZero, mask.size};
Кажется, у меня возникают трудности с добавлением маски через 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? Благодаря
Try
maskLayer.contents = (id)mask.CGImage;
Да, литой отстой, но это необходимо.
Думаю, вам также нужно будет сказать
maskLayer.bounds = (CGRect){CGPointZero, mask.size};
попробуйте следующее:
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];
вам также нужно установить маску