很简单,我正在尝试将图像添加到CALayer作为视频的水印。我过去在项目中做过这个,它已经奏效了,但由于某种原因,它一直在我当前的项目中返回黑色图像。
这是代码:
-
我已经打开了"徽标"以确保它有效
-
我已将背景设置为绿色。目前帧被填充为黑色(不是绿色(,所以我假设它正在返回图像,但由于某种原因渲染为黑色。
if let logo = options.logoImage { let layer = CALayer() animationLayer.addSublayer(layer) layer.frame = CGRect(x: 0, y: 0, width: 300, height: 300) layer.backgroundColor = UIColor.green.cgColor layer.contents = logo.cgImage layer.contentsGravity = .resizeAspect }
我想你忘了将图层设置为掩码属性:
layer.mask = imageSubLayer // or whatever it is called
所以它看起来像这样:
if let logo = options.logoImage {
let layer = CALayer()
animationLayer.addSublayer(layer)
layer.frame = CGRect(x: 0, y: 0, width: 300, height: 300)
layer.backgroundColor = UIColor.green.cgColor
layer.contents = logo.cgImage
layer.mask = animationLayer
layer.contentsGravity = .resizeAspect
}
>编辑:
CALayer的是非常短暂的,在动画之外无法正常工作:
我试图重现你所做的(我只是假设你和我一样创建了你的动画层(:
var animationLayer: CALayer = {
let l = CALayer()
l.contentsGravity = kCAGravityResizeAspect
return l
}()