1.自定义一个view ,重写drawRect方法:
//步骤
1.UIGraphicsGetCurrentContext得到了图形上下文 (graphical context),这里可以当做一个新的画布。
2.图形上下文将被存储,以便于之后的存储操作。
3.CGColorSpace描述的是颜色的域值范围。大多情况下你会使用到 RGB 模式来描述颜色。
4.这里我们定义一个渐变样式的起始颜色和结束颜色。CGColor对象是底层颜色接口的定义。这个接口方5.法会从CGColor中获取指定颜色。
6.在这个数组中,将 RGB 颜色分量和 alpha 值写入。
7.在此处可以定义各种颜色的相对位置。
8.CGGradient用来描述渐变信息。
9.这里渐变将沿纵轴 (vertical axis) 方向绘制。
10.存储图形上下文。
//相关代码
overridefuncdraw(_rect:CGRect) {
// 1
guardletcurrentContext =UIGraphicsGetCurrentContext()else{return}
// 2
currentContext.saveGState()
// 3
letcolorSpace =CGColorSpaceCreateDeviceRGB()
// 4
letstartColor =UIColor.red
guardletstartColorComponents = startColor.cgColor.componentselse{return}
//
letmiddleColor =UIColor.yellow
guardletmiddleColorComponents = middleColor.cgColor.componentselse{return}
letendColor =UIColor.blue
guardletendColorComponents = endColor.cgColor.componentselse{return}
// 5
letcolorComponents: [CGFloat]
= [startColorComponents[0], startColorComponents[1], startColorComponents[2], startColorComponents[3],
middleColorComponents[0], middleColorComponents[1], middleColorComponents[2], middleColorComponents[3],
endColorComponents[0], endColorComponents[1], endColorComponents[2], endColorComponents[3]]
// 6
letlocations:[CGFloat] = [0.0,0.5,1.0]
// 7
guardletgradient =CGGradient(colorSpace: colorSpace,colorComponents: colorComponents,locations: locations,count: locations.count)else{return}
letstartPoint =CGPoint(x:0, y:self.bounds.height)
letendPoint =CGPoint(x:self.bounds.width,y:self.bounds.height)
// 8
currentContext.drawLinearGradient(gradient, start: startPoint, end: endPoint, options:CGGradientDrawingOptions(rawValue:UInt32(0)))
// 9
currentContext.restoreGState()
}
//效果图