Swift:将图像添加到 CALayer 返回黑色



很简单,我正在尝试将图像添加到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
}()

最新更新