CAShapeLayer *shapeLayer = [CAShapeLayer layer];
CGRect rect = CGRectMake(0,0,300,300);
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:rect];
//给图层赋值路径
shapeLayer.path = path.CGPath;
//填充颜色
shaperLayer.fillColor = [UIColor redColor];
//添加遮罩
self.view.layer.mask = shapeLayer;
CALayer 有一个属性叫做mask 可以解决这个问题。
mask 属性本身就是个CALayer类型,
有和其他图层一样的绘制和布局属性。
mask图层定义了父图层的部分可见区域。
mask图层的 Color 属性是无关紧要的。mask图层实心的部分会被保留下来,其他的则会被抛弃。
CALayer 蒙版图层真正厉害的地方在于蒙版图层不局限于静态图。任何有图层构成的都可以作为mask属性,这意味着你的蒙版可以通过代码甚至是动画实时生成!
效果如下: