我试图在UIImageView上添加一个遮罩层。该图像视图通过设置其内容来保持图像并且掩模层保持另一图像。但是当我将遮罩层添加到imageview图层上时,遮罩层不会保留任何图像。掩模层已由getter初始化。添加掩码层的方法如下:
- (void)circleButtonClicked{
self.maskLayer.contents = (id)[UIImage imageNamed:@"mask.jpg"].CGImage;
self.maskLayer.frame = CGRectMake(0, 0, kSCREEN_WIDTH, kSCREEN_WIDTH);
self.maskLayer.opacity = 0.5;
[self.imageView.layer addSublayer:self.maskLayer];
UIBezierPath * pPath = [UIBezierPath bezierPathWithArcCenter:self.imageView.center radius:(kSCREEN_WIDTH-100)/2 startAngle:0.0 endAngle:M_PI*2 clockwise:YES];
self.maskLayer.path = pPath.CGPath;
UIBezierPath * otherPath = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, kSCREEN_WIDTH, kSCREEN_WIDTH)];
self.maskLayer.path = otherPath.CGPath;
[otherPath appendPath:pPath];
self.maskLayer.path = otherPath.CGPath;
self.maskLayer.fillRule = kCAFillRuleEvenOdd;
}
答案 0 :(得分:1)
形状图层用于显示路径而不是图像。提供图层内容有三种不同的方法(参见Core Animation Programming Guide),但一次只能提供一种。
您的代码中有些内容我不明白:
maskLayer
只是一个普通图层,而不是面具。如果要将其用作遮罩,则应使用mask
的{{1}}属性,而不是将其添加为子图层。CALayer
。