画面に描画されているパスの描画をアニメーション化したいのですが、Core Animation が最良の方法であると想定していますが、NSBezierPath
これを実装する方法がわかりません。
基本的には、ポイント A からポイント B へのパスを、パスが B に到達するまで A から B にゆっくりとアニメーション化するというものです。これを行う方法についての優れたチュートリアルは素晴らしいでしょう。
画面に描画されているパスの描画をアニメーション化したいのですが、Core Animation が最良の方法であると想定していますが、NSBezierPath
これを実装する方法がわかりません。
基本的には、ポイント A からポイント B へのパスを、パスが B に到達するまで A から B にゆっくりとアニメーション化するというものです。これを行う方法についての優れたチュートリアルは素晴らしいでしょう。
CGPath を使用して CAShapeLayer を作成できます (たとえば、UIBezierPath から作成できます)。
CAShapeLayer の path プロパティ自体がアニメーション化可能であり、アニメーション化可能な strokeStart および strokeEnd プロパティを使用して、より高度なアニメーションを作成することもできます (iOS 4.2 以降で使用可能)。
アニメーションで表示されるランダムな線でレイヤーを追加する方法の簡単な例:
CAShapeLayer *l = [CAShapeLayer layer];
l.frame = self.view.bounds;
l.strokeColor = [UIColor redColor].CGColor;
CGPoint start = CGPointMake(arc4random()%300+10, arc4random()%400+40);
CGPoint end = CGPointMake(arc4random()%300+10, arc4random()%400+40);
UIBezierPath *path = [[UIBezierPath alloc] init];
[path moveToPoint:start];
[path addLineToPoint:end];
l.path = path.CGPath;
[path release];
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
animation.fromValue = [NSNumber numberWithFloat:0.0f];
animation.toValue = [NSNumber numberWithFloat:1.0f];
animation.duration = 3.0f;
[l addAnimation:animation forKey:@"myStroke"];
[self.view.layer addSublayer:l];