分為線性漸變和徑向漸變
一 創建顏色空間
二 創建漸變
三 設置裁剪區域
四 繪制漸變
五 釋放對象
線性漸變
#pragma mark 線性漸變
- (void)drawGradient:(CGContextRef)context
{
//步驟:
/*
一 創建顏色空間
二 創建漸變
三 設置裁剪區域
四 繪制漸變
五 釋放對象
*/
//繪制漸變
//在計算機設置中,直接選擇rgb即可,其他顏色空間暫時不用考慮。
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
//1.創建漸變
/*
1.<#CGColorSpaceRef space#> : 顏色空間 rgb
2.<#const CGFloat *components#> : 數組 每四個一組 表示一個顏色 {r,g,b,a ,r,g,b,a}
3.<#const CGFloat *locations#>:表示漸變的開始位置
*/
CGFloat components[8] = {1.0,0.0,0.0,1.0,1.0,1.0,1.0,1.0};
CGFloat locations[2] = {0.0,1.0};
CGGradientRef gradient=CGGradientCreateWithColorComponents(colorSpace, components, locations, 2);
//漸變區域裁剪
// CGContextClipToRect(context, CGRectMake(0, 360, 200, 100));
CGRect rect[5] = {CGRectMake(0, 0, 100, 100),CGRectMake(100, 100, 100, 100),CGRectMake(200, 0, 100, 100),CGRectMake(0, 200, 100, 100),CGRectMake(200, 200, 100, 100)};
CGContextClipToRects(context, rect, 5);
//繪制漸變
CGContextDrawLinearGradient(context, gradient, CGPointMake(0.0, 0.0), CGPointMake(370, 460.0), kCGGradientDrawsAfterEndLocation);
//釋放對象
CGColorSpaceRelease(colorSpace);
CGGradientRelease(gradient);
}
徑向漸變
#pragma mark 徑向漸變
- (void)drawGradient2:(CGContextRef)context
{
//步驟:
/*
一 創建顏色空間
二 創建漸變
三 設置裁剪區域
四 繪制漸變
五 釋放對象
*/
//繪制漸變
//在計算機設置中,直接選擇rgb即可,其他顏色空間暫時不用考慮。
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
//1.創建漸變
/*
1.<#CGColorSpaceRef space#> : 顏色空間 rgb
2.<#const CGFloat *components#> : 數組 每四個一組 表示一個顏色 {r,g,b,a ,r,g,b,a}
3.<#const CGFloat *locations#>:表示漸變的開始位置
*/
CGFloat components[8] = {1.0,0.0,0.0,1.0,1.0,1.0,1.0,1.0};
CGFloat locations[2] = {0.3,1.0};
CGGradientRef gradient=CGGradientCreateWithColorComponents(colorSpace, components, locations, 2);
//繪制漸變
/*
參數:
一 context
二 gradient
三 statCenter 起始中心點
四 sartRadius 起始半徑 指定為0 從圓心漸變 否則 中心位置不漸變
五 endCenter 結束中心點(通常與起始專心點重合)
六 endRadius 結束半徑
七 漸變填充方式
*/
CGContextDrawRadialGradient(context, gradient, CGPointMake(160, 230), 10, CGPointMake(0, 100), 150,kCGGradientDrawsAfterEndLocation);
//釋放對象
CGColorSpaceRelease(colorSpace);
CGGradientRelease(gradient);
}