单个CALayer可以用作多个其他图层的蒙版吗?
我在文档中找不到任何指示单个CALayer(或子类)是否可以用作多个其他图层的mask
属性的内容。 可能吗? 还是未定义?
我的实验说它不能。 它将最终作为它所连接的最后一个图层的蒙版,并且它被指定为蒙版的任何先前图层将恢复为蒙版的默认值。
有可能的。 我结合了CAGradationLayer和CAShapeLayer的面具。
我从两层制作UIImage
,然后用它来掩饰。
您可以从CALayer生成图像,如下所示。
extension CALayer { func makeImage() -> UIImage { UIGraphicsBeginImageContext(self.frame.size) self.renderInContext(UIGraphicsGetCurrentContext()) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image } }
并且您可以通过多个图层进行遮罩。
firstMask.mask = secondMask let img = firstMask.makeImage()// require firstMask.frame let combinedMask = CALayer() combinedMask.frame = CGRectMake(0,0, img.size.width, img.size.height) combinedMask.contents = img.CGImage yourLayer.mask = combinedMask