加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 我如何以编程方式在Swift中的图像上添加渐变层?

发布时间:2020-12-14 19:16:19 所属栏目:百科 来源:网络整理
导读:我想在UI Image上放置一个预定义的透明到黑色渐变的图层,其内容图像通过网络加载 在它上面创造一个阴影的效果. 我不想通过加载具有这种渐变的png来做到这一点. 解决方法 我建议创建UIView的自定义子类(或UIImageView,如果要添加渐变的是UIImageView).在自定
我想在UI Image上放置一个预定义的透明到黑色渐变的图层,其内容图像通过网络加载
在它上面创造一个阴影的效果.

我不想通过加载具有这种渐变的png来做到这一点.

解决方法

我建议创建UIView的自定义子类(或UIImageView,如果要添加渐变的是UIImageView).在自定义视图的init方法中,创建一个CAGradientLayer并将其添加为视图图层的子图层.然后在图层上设置黑色到透明渐变.

您可能需要覆盖layoutSubviews()并更改渐变图层上的设置,以防视图的边界发生变化.

编辑:

我创建了一个playground as a gist on github,这是一个工作的例子:

代码如下所示:

import UIKit
import AVFoundation


class ImageViewWithGradient: UIImageView
{
  let myGradientLayer: CAGradientLayer

  override init(frame: CGRect)
  {
    myGradientLayer = CAGradientLayer()
    super.init(frame: frame)
    self.setup()
  }

  required init(coder aDecoder: NSCoder)
  {
    myGradientLayer = CAGradientLayer()
    super.init(coder: aDecoder)
    self.setup()
  }

  func setup()
  {
    myGradientLayer.startPoint = CGPoint(x: 0,y: 0)
    myGradientLayer.endPoint = CGPoint(x: 1,y: 1)
    let colors: [CGColorRef] = [
      UIColor.clearColor().CGColor,UIColor(red: 0,green: 0,blue: 0,alpha: 0.3).CGColor,UIColor(red: 1,green: 1,blue: 1,alpha: 0.5).CGColor,UIColor.clearColor().CGColor ]
    myGradientLayer.colors = colors
    myGradientLayer.opaque = false
    myGradientLayer.locations = [0.0,0.3,0.5,0.7,1.0]
    self.layer.addSublayer(myGradientLayer)
  }

  override func layoutSubviews()
  {
    myGradientLayer.frame = self.layer.bounds
  }
}


var aView = ImageViewWithGradient(frame: CGRect(x: 0,y: 0,width: 500,height: 500))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读