iOS 实现背景颜色渐变的方式
2017-04-16 本文已影响0人
Bonucci
1.通过CAGradientLayer 设置渐变的背景。
/**
* 1.通过CAGradientLayer 设置渐变的背景。
*/
CAGradientLayer *layer = [CAGradientLayer new];
//colors存放渐变的颜色的数组
layer.colors=@[(__bridge id)[UIColor greenColor].CGColor,(__bridge id)[UIColor whiteColor].CGColor];
/**
* 起点和终点表示的坐标系位置,(0,0)表示左上角,(1,1)表示右下角
*/
layer.startPoint = CGPointMake(0.5, 0);
layer.endPoint = CGPointMake(0.5, 1);
layer.frame = self.bounds;
[self.layer addSublayer:layer];
方法2.CGGradientRef
- (void)drawRect:(CGRect)rect{
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGColorSpaceRef colorSpace=CGColorSpaceCreateDeviceRGB();
/*指定渐变色
space:颜色空间
components:颜色数组,注意由于指定了RGB颜色空间,那么四个数组元素表示一个颜色(red、green、blue、alpha),
如果有三个颜色则这个数组有4*3个元素
locations:颜色所在位置(范围0~1),这个数组的个数不小于components中存放颜色的个数
count:渐变个数,等于locations的个数
*/
CGFloat compoents[12]={
0,0,0,1,
0.8,0.1,0.5,1.0,
1.0,1.0,1.0,1.0
};
//设置渐变的位置
CGFloat locations[3]={0,0.3,1.0};
//创建梯度上下文
CGGradientRef gradient= CGGradientCreateWithColorComponents(colorSpace, compoents, locations, 3);
/*绘制线性渐变
context:图形上下文
gradient:渐变色
startPoint:起始位置
endPoint:终止位置
options:绘制方式,kCGGradientDrawsBeforeStartLocation 开始位置之前就进行绘制,到结束位置之后不再绘制,
kCGGradientDrawsAfterEndLocation开始位置之前不进行绘制,到结束点之后继续填充
startPoint endPoint 不同与上一种方法,指的是真正的坐标
*/
CGContextDrawLinearGradient(ctx, gradient, CGPointMake(self.frame.size.width/2, 0), CGPointMake(self.frame.size.width/2,self.frame.size.height), kCGGradientDrawsAfterEndLocation);
//释放颜色空间
CGColorSpaceRelease(colorSpace);
}
这里面也有用,暂时保存