您可以使用 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)
归档时间: |
|
查看次数: |
491 次 |
最近记录: |