带有透明孔的CALayer
我有一个简单的视图(图片的左侧),并且需要为此视图创建某种叠加层(图片的右侧)。此叠加层应具有一定的不透明度,因此在下面的视图中仍部分可见。最重要的是,此覆盖层的中间应有一个圆形孔,这样它就不会覆盖视图的中心(请参见下面的图片)。 我可以轻松地创建一个这样的圆: int radius = 20; //whatever CAShapeLayer *circle = [CAShapeLayer layer]; circle.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0,radius,radius) cornerRadius:radius].CGPath; circle.position = CGPointMake(CGRectGetMidX(view.frame)-radius, CGRectGetMidY(view.frame)-radius); circle.fillColor = [UIColor clearColor].CGColor; 还有一个“完整”的矩形叠加层,如下所示: CAShapeLayer *shadow = [CAShapeLayer layer]; shadow.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, view.bounds.size.width, view.bounds.size.height) cornerRadius:0].CGPath; shadow.position = CGPointMake(0, 0); shadow.fillColor = [UIColor grayColor].CGColor; shadow.lineWidth = …