如何让UIImageView遵循一定的路径?

时间:2012-04-26 05:06:28

标签: objective-c ios core-animation core-graphics uigesturerecognizer

我使用以下方式绘制了一个弧:

CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 4.0);
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
    CGContextMoveToPoint(context, 0,300);
    CGContextAddArcToPoint(context, 125,300, 125,480, 180);//last value is the radius
    CGContextStrokePath(context);

我的目标是将UImageView放置在此弧的起始坐标处,并使用UIPanGestureRecognizer沿此弧滑动它。现在我正在使用这一行进行手势翻译:{{1​​}} CGPoint translate = [sender translationInView:self.view];sender类型。

只要UIPanGestureRecognizer向正方向移动( ------->

,图像就会向下滑动

目前我的图像从坐标translate.x开始,这是弧的起始坐标。图像响应x轴上的手势,但y值保持在(0,300)。如何对点300保持限制,使其跟随我创建的弧的坐标?

这就是我现在拥有的,它只是在x轴上滑出:

translate

我认为问题在于我用来限制x值的两个-(void)slide:(UIPanGestureRecognizer *)sender { if([sender state] == UIGestureRecognizerStateBegan) { startPos = CGPointMake(0, 300); minPos = CGPointMake(0, 300); maxPos = CGPointMake(125, 480); } else if ([sender state] == UIGestureRecognizerStateChanged) { CGPoint translate = [sender translationInView:self.view]; CGPoint newPos; newPos = CGPointMake(startPos.x + translate.x, startPos.y); //CGPoint newYPos = CGPointMake(startPos.x + translate.x, <#CGFloat y#>) if(newPos.x < minPos.x) { newPos.x = minPos.x; translate = CGPointMake(newPos.x - startPos.x, minPos.y); } if(newPos.x >= maxPos.x) { newPos.x = maxPos.x; translate = CGPointMake(newPos.x - startPos.x, maxPos.y); } [sender setTranslation:translate inView:self.view]; self.handle.center = newPos; //handle is a UIImageView } } 语句。我只是不确定如何限制if的x&amp; y值以遵循设定的曲线。

非常感谢任何帮助。

0 个答案:

没有答案