iOS 顏色漸變

iOS里面的背景顏色實現(xiàn)漸變的方式有兩種,第一種就是給一個漸變的圖片做背景,當然這樣有很大的局限性,比如我現(xiàn)在就需要根據(jù)項目需求要動態(tài)的改變漸變背景色。

這樣首先想到quartz 2D 這里的知識進行繪圖,我根據(jù)需要在自定義視圖里面的drawRect方法進行繪制。

- (void)drawRect:(CGRect)rect {


/**

? ? *? 1.通過CAGradientLayer 設置漸變的背景。

? ? */

CAGradientLayer*layer = [CAGradientLayernew];

//colors存放漸變的顏色的數(shù)組

layer.colors=@[(__bridgeid)[UIColorgreenColor].CGColor,(__bridgeid)[UIColorwhiteColor].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

? ? */


CGContextRefctx =UIGraphicsGetCurrentContext();

CGColorSpaceRefcolorSpace=CGColorSpaceCreateDeviceRGB();

/*指定漸變色

? ? space:顏色空間

? ? components:顏色數(shù)組,注意由于指定了RGB顏色空間,那么四個數(shù)組元素表示一個顏色(red、green、blue、alpha),

? ? 如果有三個顏色則這個數(shù)組有4*3個元素

? ? locations:顏色所在位置(范圍0~1),這個數(shù)組的個數(shù)不小于components中存放顏色的個數(shù)

? ? count:漸變個數(shù),等于locations的個數(shù)

? ? */

CGFloatcompoents[12]={

0,0,0,1,

0.8,0.1,0.5,1.0,

1.0,1.0,1.0,1.0

? ? };


//設置漸變的位置

CGFloatlocations[3]={0,0.3,1.0};

//創(chuàng)建梯度上下文

CGGradientRefgradient=CGGradientCreateWithColorComponents(colorSpace, compoents, locations,3);


/*繪制線性漸變

? ? context:圖形上下文

? ? gradient:漸變色

? ? startPoint:起始位置

? ? endPoint:終止位置

? ? options:繪制方式,kCGGradientDrawsBeforeStartLocation 開始位置之前就進行繪制,到結(jié)束位置之后不再繪制,

? ? kCGGradientDrawsAfterEndLocation開始位置之前不進行繪制,到結(jié)束點之后繼續(xù)填充


? ? 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);

}

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容