【问题标题】:How to draw line following user finger move如何在用户手指移动后画线
【发布时间】:2014-05-29 12:16:53
【问题描述】:

代码:

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    UIColor *grayColor = [UIColor colorWithRed: 0.8980392157 green: 0.8980392157 blue: 0.8980392157 alpha: 1.0];

    [grayColor set];

    CGContextSetLineWidth(context, 2.0);
    CGContextStrokeEllipseInRect(context, CGRectMake(100, 190, 101, 101));
}

我确实画了一个圆圈。当用户在上面移动手指时,我想在上面画线。我在谷歌上搜索了很多关于这个的内容。但我找不到任何解决方案。任何帮助将不胜感激。提前致谢。

【问题讨论】:

标签: ios objective-c


【解决方案1】:

你应该看看这些:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

这些是跟踪UIView 触摸的方法。

【讨论】:

    【解决方案2】:
    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    
            UITouch *touch = [touches anyObject];
            CGPoint tapLocation = [touch locationInView:self.superDrawingLayer];  
            lastPoint = tapLocation;
    }
    
    -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
            UITouch *touch = [touches anyObject];
            CGPoint tapLocation = [touch locationInView:self.superDrawingLayer];
            currentPoint = tapLocation;
    
            UIGraphicsBeginImageContext(self.superDrawingLayer.frame.size);
            [self.superDrawingLayer.image drawInRect:CGRectMake(0, 0, self.superDrawingLayer.frame.size.width, self.superDrawingLayer.frame.size.height)];
            CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
            CGContextSetLineWidth(UIGraphicsGetCurrentContext(), drwaingWidth);
            CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeColor);
            CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), [[UIColor colorWithRed:1.0f green:0.764705f blue:0 alpha:1.0] CGColor]);
            CGContextBeginPath(UIGraphicsGetCurrentContext());
            CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
            CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
            CGContextStrokePath(UIGraphicsGetCurrentContext());
            CGContextFlush(UIGraphicsGetCurrentContext());
    
    
            self.superDrawingLayer.image = UIGraphicsGetImageFromCurrentImageContext();
            UIGraphicsEndImageContext();
    
            lastPoint = tapLocation;
    }
    
    -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    
    }
    

    //这里的superDrawingLayer是要在上面画线的ImageView。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多