轻量级、易于使用的渐变视图,由GPU加速的CoreAnimation的Layer支持,拥有380+种内置渐变颜色,大部分来自uigradients。
用法
创建配置
CCGradientView
使用CCGradientViewConfiguration
进行配置
- 颜色。
- 类型(
axial
、conic
、radial
)。 - 位置:渐变中每种颜色的位置。
- 点:每种颜色开始和结束的点。
您可以使用以下方式之一创建配置对象:
- 仅使用颜色,它会自动调整"位置"和"点",基于颜色的数量。默认类型将是轴向。
let configWithColors = CCGradientConfiguration(colors: [UIColors])
- 与上述相同,它还接受CCGradient类型,可以是"axial"、"radial"或"conic"。
let configWithColorsAndType = CCGradientConfiguration(colors: [UIColors],
type: CCGradientType)
- 与上述相同,它还接受位置数组,指示每种颜色覆盖的区域。数组中的每个数字应在0到1之间,例如,具有两个颜色和位置=[0.25, 0.75]的渐变将呈现两个颜色,其中一个颜色覆盖视图的25%,另一个覆盖75%。
let configWithColorsAndTypeAndLocations = CCGradientConfiguration(colors: [UIColor],
type: CCGradientType,
locations: [CGFloat])
- 与上述相同,它还接受点数组。此数组需要有两个CGPoints,并在单位坐标系中定义(在[0,0]左下角和[1,1]右上角之间)。
let configWithColorsAndTypeAndLocationsAndPoints = CCGradientConfiguration(colors: [UIColor],
type: CCGradientType ,
locations: [CGFloat],
points: [CGPoint])
- 使用颜色数组,再加上
CCGradientDirection
,它是以下之一
public enum CCGradientDirection {
case topToBottom
case leftToRight
case rightToLeft
case bottomToTop
case growFromCenter
case shrinkToCenter
}
并用它初始化CCGradientConfiguration。
let configWithColorsAndDirection = CCGradientConfiguration(colors: [UIColors],
direction: CCGradientDirection)
- 与上述相同,它还接受位置数组。
let configWithColorsAndDirectionAndLocations = CCGradientConfiguration(colors: [UIColor],
direction: CCGradientDirection,
locations: [CGFloat])
添加视图
- 在Storyboard中向场景添加一个UIView,将其类更改为
CCGradientView
。根据您的集成方式,您可能需要将Module
更改为CCGradient
。您也可以通过代码添加视图。只需调用CCGradientView
的init(frame: CGRect)
即可。 - 设置
CCGradientView
的配置并实现唯一的配置方法。
func configurationForGradientView(_ gradientView: CCGradientView) -> CCGradientConfiguration
以下是一个完整示例。
class ViewController: UIViewController {
@IBOutlet weak var gradientView: CCGradientView!
override func viewDidLoad() {
super.viewDidLoad()
//set configuration to be self
gradientView.configuration = self
}
}
extension ViewController: CCGradientViewConfiguration {
func configurationForGradientView(_ gradientView: CCGradientView) -> CCGradientConfiguration {
return CCGradientConfiguration(colors: CCGradientColors.Instagram,
direction: .rightToLeft)
}
}
可供使用的渐变颜色
CCGradient内置了380多个可用的渐变。它们是从https://github.com/Ghosh/uiGradients移植过来的。您可以在其中看到大多数颜色:https://uigradients.com。感谢Ghosh
要使用其中一个预定义的渐变颜色,您只需要创建一个配置。对于颜色数组,您需要传递来自CCGradientColors
中的一个预定义颜色。
let configuration = CCGradientConfiguration(colors: CCGradientColors.MoonPurple)
同样,您可以在其中看到大多数的渐变颜色:https://uigradients.com
创意无限
您可以通过配置来发挥创意,得到像颜色轮这样的效果。
CCGradientConfiguration(colors: CCGradientColors.ColorWheel,
type: CCGradientType.conic,
points: [CGPoint(x: 0.5, y: 0.5),
CGPoint(x: 1, y: 1)])
或者,您可以屏蔽渐变视图,得到以下的效果。
class ViewController: UIViewController {
@IBOutlet weak var gradientView: CCGradientView!
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
gradientView.mask = label
gradientView.configuration = self
}
}
extension ViewController: CCGradientViewConfiguration {
func configurationForGradientView(_ gradientView: CCGradientView) -> CCGradientConfiguration {
return CCGradientConfiguration(colors: CCGradientColors.LGBT)
}
}
安装
手动操作
您可以将必要文件拖放到“Sources”文件夹中,以添加到项目中。
-
CCGradientView.swift
- 必要 -
CCGradientConfiguration.swift
- 必要 -
CCGradientColors.swift
- 可选,它包含所有内置渐变颜色 -
CCColors.swift
- 可选,它包含CSS颜色名称,在CCGradientColors.swift
中使用,因此如果您使用CCGradientColors.swift
,则需要此文件。
Cocoapods
target 'MyApp' do
pod 'CCGradient', '~> 1.0'
end
当您想使用CCGradientView时,请导入CCGradient
。
import CCGradient
进行中
- 可以动画化渐变的位置和颜色。
- 更多可使用颜色即将到来。