在不规则形状图像IOS上添加相机层

时间:2017-04-15 12:32:28

标签: ios swift overlay masking

我需要在任何不规则形状的图像上添加相机图层,即假设我有一个不规则形状的图像,内部图像中有一个圆形或任何其他不规则形状,我想嵌入现场相机。 / p>

知道如何实现此功能吗?

2 个答案:

答案 0 :(得分:4)

您可以使用UIBezierPath为掩码CAShapeLayer

绘制不规则共享
let size = 200.0

创建一个CAShapeLayer并绘制一个想要嵌入cameraPreviewLayer的形状。

let maskLayer = CAShapeLayer()
let maskPath = UIBezierPath()
maskPath.move(to: .zero)
maskPath.addLine(to: CGPoint(x: 10, y: -size))
maskPath.addLine(to: CGPoint(x: size/2, y: -size))
maskPath.addLine(to: CGPoint(x: size*2, y: size))
maskPath.close()
maskLayer.anchorPoint = .zero

设置遮罩位置

maskLayer.position = CGPoint(x: 100, y: 400)
maskLayer.path = maskPath.cgPath

self.yourVideoPreviewLayer.mask = maskLayer
self.yourVideoPreviewLayer.masksToBounds = true

或者您可以使用想要嵌入cameraPreviewLayer的形状制作图像。或者,如果图像的内部形状具有alpha值= 0,则可以反转原始图像的alpha并将其用作蒙版。

let maskLayer = CAShapeLayer()
maskLayer.anchorPoint = .zero
maskLayer.frame = videoPreviewLayer.bounds
maskLayer.contents = YourReversedImage.cgImage

self.videoPreviewLayer.mask = maskLayer
self.videoPreviewLayer.masksToBounds = true

答案 1 :(得分:1)

使用相同的帧(宽度,高度和位置)添加UIImageView的其他UIView。它不应该是UIImageView的子视图!

将此UIView的背景设置为clearColor并创建您想要的任何图层。

现在您可以将此图层用作AVCaptureVideoPreviewLayer而不是使用UIImageView图层