不知道在哪里寻找这个,但我想创建一个视图或图层的半透明蒙版,可以移动,改变不透明度,并在屏幕上重叠多个。
有这样的效果:
两个小盒子可以移动并改变颜色的不透明度。
我尝试使用CALayer
面具,但这只是穿透,所以我在洞中添加了CAShapeLayer
但你可以看到边缘。我尝试在allowsEdgeAntialiasing
上使用CAShapeLayer
,但这似乎不起作用。
我见过的其他例子只适用于UIImageViews,因为它们使用两个UIImageViews来获得效果。不幸的是,我需要这个来处理任何类型的UIView。
我也尝试使用CGBlendMode.SourceOut
,除了重叠区域更轻,这种方法很有效,这完全有道理但不是我想要的。
let blendMode = CGBlendMode.SourceOut
CGContextSaveGState(context)
CGContextSetFillColorWithColor(context, UIColor(white: 0.0, alpha: 0.75).CGColor)
CGContextFillRect(context, rect)
CGContextSetBlendMode(context, blendMode)
CGContextSetFillColorWithColor(context, UIColor(white: 0.0, alpha: 0.25).CGColor)
CGContextFillRect(context, CGRectMake(0, 500, 60, 50))
CGContextSetFillColorWithColor(context, UIColor(white: 0.0, alpha: 1).CGColor)
CGContextFillRect(context, CGRectMake(0, 550, 60, 50))
最后两个填充符重叠,第一个是将整个视图设置为半透明叠加。