Swift - CAGradientLayer
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift - CAGradientLayer相关的知识,希望对你有一定的参考价值。
参考技术ACAGradientLayer是用来生成两种或更多颜色平滑渐变的。用Core Graphics复制一个CAGradientLayer并将内容绘制到一个普通图层的寄宿图也是有可能的,但是CAGradientLayer的真正好处在于绘制使用了硬件加速。
属性解析
颜色数组,默认为nil,该数组定义了每一个渐变值的颜色。这个数组成员接受CGColorRef类型的值,如果你愿意,colors属性可以包含很多颜色,所以创建一个彩虹一样的多重渐变也是很简单的。默认情况下,这些颜色在空间上均匀地被渲染,但是我们可以用locations属性来调整空间。是可动画属性
可选的数组,定义了每一个渐变点的位置(即定义了colors属性中每个不同颜色的位置),范围在[0,1],数组中的值必须是渐变增加,如果数组为nil,那么将均匀渐变,当渲染的时候,颜色数组值会被映射到输出颜色空间。默认为nil,是可动画属性。
startPoint和endPoint属性,它们决定了渐变的方向。startPoint就是第一个渐变点,endPoint就是最后一个渐变点。这两个参数是以单位坐标系进行的定义,当进行绘制内容的时候会映射到layer的矩形区域,左上角坐标是[0,0],右下角坐标是[1,1]。默认值是[.5,0]和[.5,1],都是可动画属性。
默认值是kCAGradientLayerAxial,表示按像素均匀变化。除了默认值其它选项不能使用。
效果如下
可以看到我们仅仅是设置了渐变的颜色就可以很好的实现渐变效果,接下来一起看看相关属性的设置
添加 locations 控制渐变点
效果如下
添加 startPoint 和 endPoint 控制渐变方向
水平渐变的效果
效果如下
斜渐变
效果如下
extension CAGradientLayer
extension UINavigationBar
使用
效果如下
参考文章
效果如下
效果如下
CAGradientlayer
如何使用 Swift 3 或 Hue 将 CAGradientLayer 转换为 UIColor?
【中文标题】如何使用 Swift 3 或 Hue 将 CAGradientLayer 转换为 UIColor?【英文标题】:How to Convert a CAGradientLayer to a UIColor with Swift 3 or Hue? 【发布时间】:2016-10-29 03:55:17 【问题描述】:我尝试使用 Hue 将背景颜色设为渐变色 (https://github.com/hyperoslo/Hue),但我收到错误消息,提示 backgroundColor 仅适用于 UIColor。但是是否可以将 CAGradientLayer 更改为 UIColor。 (我更喜欢在 Hue 框架中,但在苹果框架中也可以。)
【问题讨论】:
【参考方案1】:在您链接到的色调页面上有一个示例:
lazy var gradient: CAGradientLayer = [
UIColor(hex: "#FD4340"),
UIColor(hex: "#CE2BAE")
].gradient gradient in
gradient.speed = 0
gradient.timeOffset = 0
return gradient
您需要做的就是将其作为子图层添加到您的视图中。
view.layer.addSublayer(gradient)
【讨论】:
可以把它变成 UIColor 吗?还是让它针对特定元素? UIColor 不能是渐变色;除了 UIColor(patternImage image: UIImage) 的奇怪情况外,它始终是单一颜色。我想您可以将渐变渲染为图像并将其用作图案图像颜色。将 CAGradientLayer 添加到现有视图要容易得多。以上是关于Swift - CAGradientLayer的主要内容,如果未能解决你的问题,请参考以下文章