如何修改视图的CALayer

时间:2014-02-27 16:12:27

标签: ios calayer cagradientlayer

我在MTAnimatedLabel

中看到了代码
 CAGradientLayer *gradientLayer  = (CAGradientLayer *)self.layer;
gradientLayer.backgroundColor   = [super.textColor CGColor];
gradientLayer.startPoint        = CGPointMake(-self.gradientWidth, 0.);
gradientLayer.endPoint          = CGPointMake(0., 0.);
gradientLayer.colors            = [NSArray arrayWithObjects:(id)[self.textColor CGColor],(id)[self.tint CGColor], (id)[self.textColor CGColor], nil];

自我是一个UILabel。从文档中,图层应该是只读的,但我不知道为什么在这个回购中,它有效。

所以我在我的程序中尝试这些代码。

 UIView *gradientView = [[UIView alloc] initWithFrame:textLayer.frame];
[self.view addSubview:gradientView];
CAGradientLayer *gradient = (CAGradientLayer*)gradientView.layer;
gradient.startPoint = CGPointMake(-0.4, 0.0);
gradient.endPoint = CGPointMake(0.0, 0.0);
gradient.colors = @[(id)[UIColor darkGrayColor].CGColor, (id)[UIColor whiteColor].CGColor, (id)[UIColor darkGrayColor].CGColor];
gradient.backgroundColor = [UIColor clearColor].CGColor;
gradient.frame = textLayer.frame

抛出错误: - [CALayer setColors:]:无法识别的选择器发送到实例0x8f8dca0

我无法理解为什么我的代码无法运行。希望有人能帮助我。

1 个答案:

答案 0 :(得分:2)

看起来你错过了添加

+ (Class)layerClass
{
    return [CAGradientLayer class];
}

制作视图图层渐变,默认情况下此方法会返回没有colors属性的CALayer,请参阅UIView class reference