【问题标题】:Swift: Add image to CALayer returns blackSwift:将图像添加到 CALayer 返回黑色
【发布时间】:2020-06-25 02:16:54
【问题描述】:

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

【问题讨论】:

    标签: swift xcode avfoundation core-animation calayer


    【解决方案1】:

    我认为您忘记将 layer 设置为 mask 属性:

    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 非常短暂,在动画之外无法正常工作:

    我试图重现您所做的事情(我只是假设您创建的 animationLayer 与我所做的相同):

      var animationLayer: CALayer = {
            let l = CALayer()
            l.contentsGravity = kCAGravityResizeAspect
            return l
        }()
    

    【讨论】:

    • 当我添加这个时,整个 CALayer 就消失了。
    • 您能分享一下您是如何创建animationLayer
    • 您好,感谢您对此进行调查。我认为我使用的图像是损坏的或什么的。我重新启动了我的应用程序 Xcode,并导入了不同的图像,我的原始代码现在可以工作了。再次感谢
    猜你喜欢
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 2015-09-12
    • 2019-06-21
    • 1970-01-01
    相关资源
    最近更新 更多