Swift CAGradientLayer颜色渐变器

我们想设置一个view的颜色,通常可以用backgroundColor方法,但是这只能设置纯色背景。如果想实现渐变色背景,一种方法是使用Core Graphics,还有一种方法就是本文要提的CAGradientLayer。
CAGradientLayer是用来生成两种或者多种颜色平滑渐变的,其好处是CAGradientLayer在于绘制使用了硬件加速。

1、属性基本介绍:

//颜色数组,定义渐变层的各个颜色
open var colors: [Any]?
//决定每个渐变颜色的终止位置,这些值必须是递增的,数组的长度和 colors 的长度最好一致
open var locations: [NSNumber]?
//渲染的起始位置,默认值是:[.5,0](具体坐标系参考下图)
open var startPoint: CGPoint
//渲染的终止位置,默认值是:[.5,1](具体坐标系参考下图)
open var endPoint: CGPoint
//默认值是axial,表示按像素均匀变化。除了默认值也无其它选项
open var type: String
坐标系参考.png

2、渐变色背景

let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.view.bounds
self.view.layer.addSublayer(gradientLayer)
gradientLayer.colors = [UIColor.red.cgColor,
                                UIColor.yellow.cgColor,
                                UIColor.orange.cgColor]
let gradientLocations:[NSNumber] = [0.0,0.8,1.0]
gradientLayer.locations = gradientLocations
gradientLayer.startPoint = CGPoint.init(x: 0, y: 0)
gradientLayer.endPoint = CGPoint.init(x: 1, y: 1)

效果图如下:


渐变色背景.png

3、文字添加渐变色

//首先分别创建渐变层和文本标签,然后将渐变层的mask设置为文本标签即可。
let containerView = UIView.init(frame: CGRect.init(x: 20, y: 100, width: 200, height: 60))
self.view.addSubview(containerView)
        
let label = UILabel.init(frame: CGRect.init(x: 0, y: 0, width: 200, height: 60))
label.text = "Darren wang"
label.font = UIFont.boldSystemFont(ofSize: 26)
containerView.addSubview(label)
        
let gradientLayer = CAGradientLayer()
gradientLayer.colors = [UIColor.orange.cgColor, UIColor.yellow.cgColor]
gradientLayer.locations = [0.0, 1.0]
gradientLayer.frame = label.frame
containerView.layer.insertSublayer(gradientLayer, at: 0)
gradientLayer.mask = label.layer

效果图如下:


文字渐变色.png

4、边界渐隐效果

//原理同文字渐变色,但是使用的是透明度渐变。依然为容器view设置遮罩,主要代码如下
let containerView = UIView.init(frame: CGRect.init(x: 0, y: 150, width: view.frame.size.width, height: view.frame.size.height-150))
view.addSubview(containerView)
        
let tableView = UITableView()
tableView.frame = containerView.bounds
tableView.backgroundColor = .clear
tableView.separatorStyle = .none
tableView.rowHeight = 30
tableView.register(TableViewCell.self, forCellReuseIdentifier: "cell")
tableView.dataSource = self
containerView.addSubview(tableView)
        
let gradientLayer = CAGradientLayer()
gradientLayer.colors = [UIColor.black.withAlphaComponent(0.0).cgColor,
        UIColor.black.cgColor]
gradientLayer.frame = containerView.frame
gradientLayer.locations = [0,0.15,1]
containerView.layer.mask = gradientLayer

效果图如下:


边界渐隐效果.png

以上代码扔到了github:https://github.com/darren1192/WHSwiftDemo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,186评论 3 119
  • 1 CALayer IOS SDK详解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi阅读 5,335评论 3 23
  • 9月8号,你来到了这个世界上,我感到万分的欣喜,你可是我盼星星,盼月亮盼来的。 早上吃过早饭,肚子一阵比一阵疼的厉...
    顾苏橙阅读 831评论 0 0
  • 活着的证明?存在的标识? 我不知道,也许。 曾经, 让你哐哐心跳的人和事还在吗? 现在, 还有让你哐哐心动的时刻吗...
    奧秘阅读 444评论 0 1
  • 作者:史遇春 日暮江山的满清统治,在政权末期,依然奋力挣扎,力图挽回颓势,但是,深入骨子里的恶疾,已经积重难返。因...
    史遇春之尘境心影录阅读 1,007评论 0 3

友情链接更多精彩内容