0

Я программировал в Objective C уже пару недель, а функция небольшого приложения для iPhone, которое я делаю, это рисовать линии над изображением. В viewDidLoadMethod мой взгляд контроллера я инициализацию UIPanGestureRecognizer сРисование пользовательского пути на UIImageView

UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] 
     initWithTarget:self action:@selector(drawLine:)]; 
[panGestureRecognizer setMinimumNumberOfTouches:1]; 
[panGestureRecognizer setMaximumNumberOfTouches:1]; 
[self.imageView addGestureRecognizer:panGestureRecognizer]; 
panGestureRecognizer = nil; 

Функция, которая реагирует на panGestureRecognizer является

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

    CGPoint start = [panGestureRecognizer locationInView:self.imageView]; 

    CGPoint shift = [panGestureRecognizer translationInView:self.imageView]; 

    CGPoint final; 
    final.x = start.x + shift.x; 
    final.y = start.y + shift.y; 

    UIBezierPath *path = [[UIBezierPath alloc] init]; 

    [path moveToPoint:start]; 

    [path addLineToPoint:final]; 

    [path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0]; 

} 

Код выполняется, когда я пошевелить пальцем на изображение, но не появляются линии. Я не уверен, что это означает, что он находится за образ, который уже находится в imageView, или если он вообще не нарисован. Любая помощь о том, как подойти к этой проблеме, будет оценена, не уверен, что я на правильном пути. Благодарю.

ответ

0

У вас нет действительного CGContextRef для рисования, потому что вы не выполняете этот код внутри любого цикла рисования.

Я бы хранить эти CGPoints в нескольких переменных и вызова setNeedsDisplay на вид или слоя, который находится там для рисования внутри, а затем положить ваш код рисования внутри - (Недействительными) DrawRect:

+0

Большое спасибо для обоих ваших ответов. – mcfisty