Swift - CAGradientLayer

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift - CAGradientLayer相关的知识,希望对你有一定的参考价值。

参考技术A

CAGradientLayer是用来生成两种或更多颜色平滑渐变的。用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的主要内容,如果未能解决你的问题,请参考以下文章

Swift入门系列--Swift官方文档(2.2)--中文翻译--About Swift 关于Swift

swift 示例BS swift.swift

swift swift_bug.swift

ios 整理(一)swift和oc的区别

swift swift_extension5.swift

swift swift_optional4.swift