CALayer w / Animation为UIViews图层

时间:2010-09-05 06:22:52

标签: iphone

我有一个UIView&我希望该视图的图层是一个连续循环的动画但我开始时遇到一些麻烦。我在视图子类中有以下内容:

+ (Class)layerClass {

return [CALayer class];

}

然后在我的viewController中我有:

CAGradientLayer *gradient = [CAGradientLayer layer];
[gradient setColors:[NSArray arrayWithObjects:[UIColor redColor],[UIColor blueColor],nil]];
[[[self view] layer] addSublayer:gradient];

这会导致我的应用崩溃。我究竟做错了什么?该应用程序崩溃与EXC_BAD_ACCESS。

2 个答案:

答案 0 :(得分:1)

实际上,您遇到的崩溃与未设置位置无关。问题与您在setColors数组中传递错误类型的事实有关。 CGColorRef是预期的类型。您的代码应如下所示:

CAGradientLayer *gradient = [CAGradientLayer layer];
[gradient setColors:[NSArray arrayWithObjects:(id)[[UIColor redColor] CGColor],
                                        (id)[[UIColor blueColor] CGColor],nil]];
[[[self view] layer] addSublayer:gradient];

CAGradientLayer的locations参数是可选的。

最好的问候。

答案 1 :(得分:0)

您忘记指定颜色的位置。默认情况下,位置为零。

CAGradientLayer *gradient = [CAGradientLayer layer];
[gradient setColors:[NSArray arrayWithObjects:
          [[UIColor redColor] CGColor],
          [[UIColor blueColor] CGColor],
          nil]];

[gradient setLocations:
          [NSNumber numberWithFloat:0.0],  // for redColor
          [NSNumber numberWithFloat:1.0],  // for blueColor
          nil]];

[[[self view] layer] addSublayer:gradient];