Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 画直线_Ios_Touch_Line - Fatal编程技术网

Ios 画直线

Ios 画直线,ios,touch,line,Ios,Touch,Line,我用这个代码画了一条直线(显然是在用户触摸上),我需要显示从开始点到用户握住触摸(而不是结束触摸)的直线,就像从开始点开始的橡皮筋一样,随着手指的移动。我可能忽略了一些需要修改以产生必要效果的内容。有什么想法吗 注意:我在视图控制器内 - (void) drawLine:(UIPanGestureRecognizer *)sender { NSLog(@"Sender : %@", sender); CGPoint currentPoint; //CGAffineTr

我用这个代码画了一条直线(显然是在用户触摸上),我需要显示从开始点到用户握住触摸(而不是结束触摸)的直线,就像从开始点开始的橡皮筋一样,随着手指的移动。我可能忽略了一些需要修改以产生必要效果的内容。有什么想法吗

注意:我在视图控制器内

- (void) drawLine:(UIPanGestureRecognizer *)sender
{

    NSLog(@"Sender : %@", sender);
    CGPoint currentPoint;

    //CGAffineTransformMakeScale(lastScale, lastScale);
    if([(UIPanGestureRecognizer *)sender state] == UIGestureRecognizerStateBegan ||                                       [(UIPanGestureRecognizer *)sender state] == UIGestureRecognizerStateChanged)
    {
        currentPoint = [(UIPanGestureRecognizer *)sender locationInView:imgView];

        previousPoint = currentPoint;
    }

    if([(UIPanGestureRecognizer *)sender state] == UIGestureRecognizerStateChanged) 
    { 
        touchedPoint = [(UIPanGestureRecognizer *)sender locationInView:imgView]; 
        [imgView setNeedsDisplay]; 
    }

    if([(UIPanGestureRecognizer *)sender state] == UIGestureRecognizerStateEnded)
    {
        currentPoint = [(UIPanGestureRecognizer *)sender locationInView:imgView];
        imgView.image =  [self drawLineFromPoint:previousPoint toPoint:currentPoint   image:imgView.image];

        previousPoint = currentPoint;

    }

}
这是[DrawlineFromPoint:topoint:]方法

UIGraphicsBeginImageContext(imgView.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();       
CGContextSaveGState(context);

CGContextTranslateCTM(context, 0.0, imgView.frame.size.height);
CGContextScaleCTM(context, 1.0, -1.0);

CGContextSetShouldAntialias(context, YES);
CGContextSetLineWidth(context, 1.0f);
CGContextSetRGBStrokeColor(context, 0.7, 0.7, 0.7, 1.0);

CGContextMoveToPoint(context, fromPoint.x, fromPoint.y);
CGContextAddLineToPoint(context, toPoint.x, toPoint.y);
CGContextDrawPath(context, kCGPathStroke); 

CGContextRestoreGState(context);

NSLog(@"frompoint.x : %f, frompoint.y : %f",fromPoint.x, fromPoint.y );
NSLog(@"topoint.x : %f, topoint.y : %f", toPoint.x, toPoint.y);

UIImage *ret = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
这是我发现的一个示例项目,它实现了所需的功能

另一种方法是,正如Lefteris在评论中所建议的,在UIView内部,覆盖开始、移动和结束的触摸。并使用drawRect绘制直线。这条线将拖到您当前触摸的任何位置。

这是我找到的一个示例项目,它实现了所需的功能


另一种方法是,正如Lefteris在评论中所建议的,在UIView内部,覆盖开始、移动和结束的触摸。并使用drawRect绘制直线。线路将拖到您当前触摸的任何位置。

如果您尝试使用该代码,会发生什么情况?你的drawLineFromPoint:toPoint方法是做什么的?你忽略了最重要的部分…当手势移动时,你实际上在做什么。现在你只有触摸开始和结束的逻辑。我在触摸移动部分尝试了设置需要显示。没有结果。试过这个<代码>如果([(UIPanGestureRecognizer*)发送方状态]==UIGestureRecognizerStateChanged){touchedPoint=[(UIPanGestureRecognizer*)发送方位置查看:imgView];[imgView setNeedsDisplay];}编辑问题,为
绘图线从点:到点:
添加代码,如果尝试使用该代码会发生什么?你的drawLineFromPoint:toPoint方法是做什么的?你忽略了最重要的部分…当手势移动时,你实际上在做什么。现在你只有触摸开始和结束的逻辑。我在触摸移动部分尝试了设置需要显示。没有结果。试过这个<代码>如果([(UIPanGestureRecognizer*)发送方状态]==UIGestureRecognizerStateChanged){touchedPoint=[(UIPanGestureRecognizer*)发送方位置查看:imgView];[imgView setNeedsDisplay];}编辑的问题,为
绘图线从点:到点: