2016-12-07 5 views
0

На изображении ниже, я рисую и результат в точке А. Прямо там, где касается мой палец.Как сделать смещение UITouches?

enter image description here

Как я могу сделать изображение появится около 40pt выше моего фактического касания. (B)

Я использую классический код coreGraphic UITouch .. как так:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

    // add the first touch 
    UITouch *touch = [touches anyObject]; 

    previousPoint1 = [touch previousLocationInView:self]; 
    currentPoint = [touch locationInView:self]; 

    //transform = CGAffineTransformTranslate(self.transform, 5.0, 10.0) 

    // init the bezier path 
    self.currentTool = [self toolWithCurrentSettings]; 
    self.currentTool.lineWidth = self.lineWidth; 
    self.currentTool.lineColor = self.lineColor; 
    self.currentTool.lineAlpha = self.lineAlpha; 


     [self.pathArray addObject:self.currentTool]; 
     [self.undoStates addObject:[self.currentTool captureToolState]]; 

     [self.currentTool setInitialPoint:currentPoint]; 
    } 

    // call the delegate 
    if ([self.delegate respondsToSelector:@selector(drawingView:willBeginDrawUsingTool:)]) { 
     [self.delegate drawingView:self willBeginDrawUsingTool:self.currentTool]; 
    } 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

    // save all the touches in the path 
    UITouch *touch = [touches anyObject]; 

    previousPoint2 = previousPoint1; 
    previousPoint1 = [touch previousLocationInView:self]; 
    currentPoint = [touch locationInView:self]; 

     [self.currentTool moveFromPoint:previousPoint1 toPoint:currentPoint]; 
     [self setNeedsDisplay]; 
    } 

} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

    // make sure a point is recorded 
    [self touchesMoved:touches withEvent:event]; 

      CGPoint point = [[touches anyObject] locationInView:self]; 
      [self.currentTool setInitialPoint:point]; 
      self.draggableTextView = ((ACEDrawingDraggableTextTool *)self.currentTool).labelView; 

      [self.pathArray addObject:self.currentTool]; 

      [self finishDrawing]; 

     [self finishDrawing]; 
    } 
} 

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    // make sure a point is recorded 
    [self touchesEnded:touches withEvent:event]; 
} 

Любая помощь будет оценена.

ответ

1
previousPoint1 = [touch previousLocationInView:self]; 
currentPoint = [touch locationInView:self]; 
// add these 2 lines below: 
previousPoint1 = CGPointMake(previousPoint1.x, previousPoint1.y+40); 
currentPoint = CGPointMake(currentPoint.x, currentPoint.y+40); 
+1

Спасибо за тонну. Я использовал y-40, чтобы получить эффект, который я хотел, но я ценю, что вы указали мне в правильном направлении. –

+0

Рад мог помочь. – GeneCode

 Смежные вопросы

  • Нет связанных вопросов^_^