我想创建一个遮罩层,这是一个圆圈,使圆圈内容透明,并保持周围的一切.不幸的是,下面的代码恰恰相反,它绘制了一个圆圈并使一切变得透明. CAShapeLayer * shape = [CAShapeLayer layer];shape.frame
CAShapeLayer * shape = [CAShapeLayer layer]; shape.frame = CGRectMake((CGSSize().width/2.f)-40.f, -40.f, 80.f, 80.f); CGPathRef pathRef = CGPathCreateWithEllipseInRect(CGRectMakeBoundsWithSize(shape.frame.size), NULL); shape.path = pathRef; shape.fillColor = [UIColor blueColor].CGColor; self.layer.mask = shape;是的,kCAFillRuleEvenOdd在没有首先添加rect的情况下没有做到这一点,这里有一个工作片段:
CAShapeLayer *shape = [CAShapeLayer layer]; shape.frame = self.bounds; CGMutablePathRef pathRef = CGPathCreateMutable(); CGPathAddRect(pathRef, NULL, self.bounds); CGPathAddEllipseInRect(pathRef, NULL, self.bounds); shape.fillRule = kCAFillRuleEvenOdd; shape.path = pathRef; self.layer.mask = shape;