Я создал 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