我需要在任何不规则形状的图像上添加相机图层,即假设我有一个不规则形状的图像,内部图像中有一个圆形或任何其他不规则形状,我想嵌入现场相机。 / p>
知道如何实现此功能吗?
答案 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图层