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

iAv*_*tor 9 overlay masking ios swift

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

知道我怎么能实现这个功能吗?

Vit*_*nov 4

您可以使用 UIBezierPath 为遮罩 CAShapeLayer 绘制不规则共享

let size = 200.0
Run Code Online (Sandbox Code Playgroud)

创建一个 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
Run Code Online (Sandbox Code Playgroud)

设置遮罩位置

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

self.yourVideoPreviewLayer.mask = maskLayer
self.yourVideoPreviewLayer.masksToBounds = true
Run Code Online (Sandbox Code Playgroud)

或者,您可以制作具有要在其中嵌入相机预览层的形状的图像。或者,如果图像的内部形状的 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
Run Code Online (Sandbox Code Playgroud)