0
私はCAShapeLayer
を作成し、ベジエキュービックパス(addCurveToPoint:controlPoint1:controlPoint2:
機能付き)を追加し、そのカーブの開始点を少し追加しました。その後、私はCAKeyFrameAnimation
を作成し、その小さなビューをカーブの開始点からアニメーションの終点まで移動させました。アニメーション中にそのビューの中心点を取得したい。何か案は?アニメーション中にビューの座標を取得する方法は?
CGPoint start, p, p1,p2;
start = CGPointMake(0, 150);
p = CGPointMake(300, 150);
p1 = CGPointMake(50, 225);
p2 = CGPointMake(250, 75);
[self.bezierPath moveToPoint:start];
[self.bezierPath addCurveToPoint:p
controlPoint1:p1
controlPoint2:p2];
NSLog(@"self bezierpath = %@",self.bezierPath);
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.path = self.bezierPath.CGPath;
shapeLayer.fillColor = [UIColor clearColor].CGColor;
shapeLayer.strokeColor = [UIColor redColor].CGColor;
shapeLayer.lineWidth = 3.f;
[self.yellowView.layer addSublayer:shapeLayer];
self.sliderThumb = [[UIView alloc]initWithFrame:(CGRect){0,0,20,20}];
self.sliderThumb.backgroundColor = [UIColor blackColor];
self.sliderThumb.center = CGPointMake(0, 150);
[self.yellowView addSubview:self.sliderThumb];
CAKeyframeAnimation *animation = [CAKeyframeAnimation animation];
animation.keyPath = @"position";
animation.duration = 4.f;
animation.path = self.bezierPath.CGPath;
[self.sliderThumb.layer addAnimation:animation forKey:nil];
CALayer *layer = self.sliderThumb.layer.presentationLayer;
NSLog(@"layer coordinates %f", layer.frame.origin.x);
`
答えに感謝します。あなたは、その曲線の座標を得る他の方法はありますか?私はスライダのようなものを作成したいが、カーブしたトラックを作りたい。 – passingnil
http://stackoverflow.com/a/13667092/1271826を参照してください。 – Rob
素晴らしい!ありがとうございました。 @Rob – passingnil