我一直在尝试绘制一个简单的矩形并为边缘颜色设置动画。我尝试使用following链接,但仍然没有帮助。我最后通过改变图层的边框颜色和动画来修复它。这很好。
strokeColor
是否有KVO,因为我正在为backgroundColor
图层工作。
我正在使用运行iOS SDK 6.1的XCode 4.6
这就是我一直在做的事情:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
CABasicAnimation *strokeAnim = [CABasicAnimation animationWithKeyPath:@"strokeColor"];
strokeAnim.fromValue = (id) [UIColor redColor].CGColor;
strokeAnim.toValue = (id) [UIColor greenColor].CGColor;
strokeAnim.duration = 3.0;
strokeAnim.repeatCount = 0;
strokeAnim.autoreverses = YES;
[self.layer addAnimation:strokeAnim forKey:@"animateStrokeColor"];
CGContextMoveToPoint(context, 0, 0);
CGContextAddLineToPoint(context, squareLength, 0);
CGContextAddLineToPoint(context, squareLength, squareLength);
CGContextAddLineToPoint(context, 0, squareLength);
CGContextAddLineToPoint(context, 0, 0);
CGContextStrokePath(context);
答案 0 :(得分:0)
在研究了同样的问题之后,我发现strokeColor
不是CALayer
上的可动画属性。我认为这与CALayer被渲染到缓存的位图有关。
解决方案是使用CAShapeLayer
,而strokeColor
可设置动画。
答案 1 :(得分:0)
tl; dr; 您可能意味着@"borderColor"
除非您在视图中覆盖了+ (Class)layerClass
(我怀疑您这样做了),否则您的视图层将成为CALayer
实例,该实例没有strokeColor
属性。
你可以使用CAShapeLayer,但是你不应该只针对笔划这样做,因为CALayer具有borderColor
属性,这可能就是你想要的。
所以我的建议是设置borderColor
的动画。
从您发布的代码看起来,您在视图drawRect:
实现中添加了动画。此方法仅应用于实际绘图,我强烈建议您将动画代码移动到其他位置。每次您的视图重绘自己时都会调用此方法,并且这种方法可能经常用于添加新动画。