2010-05-21 58 views
0

我有三個CGGradientRef,我需要能夠動態重新着色。當我初次獲得預期結果時初始化CGGradientRef,但每次嘗試更改顏色時都不會發生任何事情。爲什麼?如何動態重新着色CGGradientRef

梯度是一個實例變量插件的CALayer的子類:

@interface GradientLayer : CALayer 
{ 
    CGGradientRef gradient; 
    //other stuff 
} 
@end 

代碼:

if (gradient != NULL) 
    { 
     CGGradientRelease(gradient); 
     gradient = NULL; 
    } 

    RGBA color[360]; 
    //set up array 
    CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB(); 
    gradient = CGGradientCreateWithColorComponents 
    (
    rgb, 
    color, 
    NULL, 
    sizeof (color)/sizeof (color[0]) 
    ); 
    CGColorSpaceRelease(rgb); 
    [self setNeedsDisplay]; 

回答

0

CGGradientRefs不能動態着色。要動態地爲漸變着色,請使用CGShadingRef。