分為線性漸變和徑向漸變
一 創建顏色空間
二 創建漸變
三 設置裁剪區域
四 繪制漸變
五 釋放對象
線性漸變
#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); }