我正在绘制一个基本圆圈的动画.这很好用,除了动画开始在3点位置绘制.有谁知道我怎么能在12点开始?
self.circle = [CAShapeLayer layer]; self.circle.fillColor = nil; self.circle.lineWidth = 7; self.circle.strokeColor = [UIColor blackColor].CGColor; self.circle.bounds = CGRectMake(0,200,200); self.circle.path = [UIBezierPath bezierPathWithOvalInRect:self.circle.bounds].CGPath; [self.view.layer addSublayer:self.circle]; CABasicAnimation *drawAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"]; drawAnimation.duration = 5.0; drawAnimation.repeatCount = 1.0; drawAnimation.removedOnCompletion = NO; drawAnimation.fromValue = [NSNumber numberWithFloat:0.0f]; drawAnimation.toValue = [NSNumber numberWithFloat:1.0f]; drawAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; [self.circle addAnimation:drawAnimation forKey:@"drawCircleAnimation"];
解决方法
您可以使用bezierPathWithArcCenter而不是bezierPathWithOvalInRect,因为它允许指定开始和结束角度:
CGFloat radius = self.circle.bounds.size.width/2; // Assuming that width == height self.circle.path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(radius,radius) radius:radius startAngle:(-M_PI/2) endAngle:(3*M_PI/2) clockwise:YES].CGPath;
有关角度的含义,请参阅bezierPathWithArcCenter文档.