我有一个基础层,用透明遮罩层遮盖。
遮罩层有一个子层,一个透明的圆圈。工作正常,基础层被圆圈掩盖。
但我想用圆圈清除(清零)蒙版像素。不填满。你能得到我想要的吗?
如何?
您可以在此处查看蒙版图像的 Alpha 通道。
这是一个 60 fps 的动画,所以分配实例/自定义绘制每一帧我认为不是一个解决方案,这会降低性能。
我有一个基础层,用透明遮罩层遮盖。
遮罩层有一个子层,一个透明的圆圈。工作正常,基础层被圆圈掩盖。
但我想用圆圈清除(清零)蒙版像素。不填满。你能得到我想要的吗?
如何?
您可以在此处查看蒙版图像的 Alpha 通道。
这是一个 60 fps 的动画,所以分配实例/自定义绘制每一帧我认为不是一个解决方案,这会降低性能。
它只能通过自定义绘图在 CALAyer 子类中执行(至少在 iOS 上,还没有任何用于混合的 CIFilter)。正是我想要避免的。:(
方法有很多,但最简单的似乎是使用清除混合模式。
// Draw with Clear (!) blend mode.
CGContextSetBlendMode(context, kCGBlendModeClear);
CGContextSetFillColorWithColor(context, self.color.CGColor);
CGContextFillPath(context);
甚至不需要任何剪辑或遮罩。也许我会通过缓存路径渲染来获得性能。