创建和绘制渐变
2020-07-24 本文已影响0人
浪呀么浪打浪

Core Graphics 允许开发者创建两种类型的渐变:线性和渐变的。线性渐变以某种颜色从一个点开始,以另一种颜色在其他点结束。
CGGradientCreateWithColorComponents
调用CGGradientCreateWithColorComponents函数创建一个线性渐变。这个函数的返回值是一个新类型CGGradientRef的渐变。这是一个句柄,不再使用的时候要调用CGGradientRelease。

space:色彩空间,是一个色彩范围的容器。
components:颜色分量的数组,这个数组必须包含红绿蓝、alpha值。如果需要两个位置(起点、终点),那么必须为数组提供两种颜色。因为每个颜色是由红绿蓝、alpha组成,所以这个数组就有2x4项,第一个颜色4项,第二个颜色4项。
locations:位置数组,颜色数组中各个颜色的位置,此参数控制该渐变从一种颜色过渡到另一种颜色的速度有多快。该数组中元素的数量必须和第四个参数的值相同。
count:位置数组的元素数量,这个参数指明了我们需要多少颜色和位置。
CGContextDrawLinearGradient

CGContextRef:指定用于绘制线性渐变的图形上下文;
gradient:使用CGGradientCreateWithColorComponents创建的线性渐变对象的句柄。
options:当你的起点和终点不在图形上下文的边缘时,指定该如何处理。你可以使用你的开始或结束颜色来填充渐变以外的空间。
kCGGradientDrawsBeforeStartLocation:扩展整个渐变到渐变的起点之前的所有点。
kCGGradientDrawsAfterEndLocation:扩展整个渐变到渐变的终点之后的所有点。
0:不扩展该渐变