【发布时间】:2016-01-07 11:07:19
【问题描述】:
我想使用CAShapeLayer stroke 创建看起来像UIActivityIndicator 动画的动画。
我已经创建了图层:
self.ovalShapeLayer = [CAShapeLayer layer];
self.ovalShapeLayer.strokeColor = [UIColor redColor].CGColor;
self.ovalShapeLayer.fillColor = [UIColor clearColor].CGColor;
self.ovalShapeLayer.lineWidth = 15.0;
self.ovalShapeLayer.lineDashPattern = @[@1, @9];
self.ovalShapeLayer.lineDashPhase = 20.0;
self.ovalShapeLayer.lineJoin = kCALineJoinBevel;
self.ovalShapeLayer.strokeStart = 0.0;
self.ovalShapeLayer.strokeEnd = 1.0;
self.ovalShapeLayer.path = [UIBezierPath bezierPathWithOvalInRect:self.controlView.bounds].CGPath;
[self.controlView.layer addSublayer:self.ovalShapeLayer];
而且效果很好。我还可以使用
为笔画末端设置动画[CABasicAnimation animationWithKeyPath:@"strokeEnd"]
但是UIActivityIndicator 动画更复杂,因为它的破折号正在淡入/淡出,看起来像旋转。您对如何实现该动画有任何想法吗?我正在考虑使用新的CAShapeLayer 创建每个破折号,然后使用keyframe 不透明动画,但这似乎是错误的方式。
【问题讨论】:
标签: ios objective-c uiactivityindicatorview cashapelayer caanimation