我使用以下方式绘制了一个弧:
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值以遵循设定的曲线。
非常感谢任何帮助。