Как я могу нарисовать точку на экране при касании Ended с помощью UIBezierpath

Может кто-нибудь показать мне, как нарисовать одну точку с помощью UIBezierpath? Я могу нарисовать линию, используя UIBezierpath, но если я уберу палец и верну его, а затем уберу, ничего не будет нарисовано на экране.

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint p = [touch locationInView:self];
    [pPath moveToPoint:p];
    [pPath stroke];
    [self setNeedsDisplay];
}

- (void)drawRect:(CGRect)rect
{
     [pPath stroke];
}

person newdev1    schedule 05.04.2013    source источник


Ответы (2)


Ваш путь не содержит сегментов линий или кривых, которые нужно обвести.

Попробуйте это вместо этого:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    CGPoint p = [touches.anyObject locationInView:self];
    static CGFloat const kRadius = 3;
    CGRect rect = CGRectMake(p.x - kRadius, p.y - kRadius, 2 * kRadius, 2 * kRadius);
    pPath = [UIBezierPath bezierPathWithOvalInRect:rect];
    [self setNeedsDisplay];
}

- (void)drawRect:(CGRect)rect {
    [[UIColor blackColor] setFill];
    [pPath fill];
}
person rob mayoff    schedule 05.04.2013
comment
Отлично. Большое спасибо, Роб. - person newdev1; 06.04.2013
comment
Привет, @Rob, могу я начать путь с овала? - person Ranjit; 23.01.2014
comment
@ Ранджит Конечно. Почему бы нет? Тебе не нужно мое разрешение. - person rob mayoff; 23.01.2014
comment
Хорошо, @robmayoff, можете ли вы взглянуть на это и предложить мне, как это можно сделать лучше stackoverflow.com/questions/21281278/ - person Ranjit; 23.01.2014

Я использовал этот код:

 -(void)handleTap:(UITapGestureRecognizer*)singleTap { 
     //draw dot on screen

     CGPoint tapPoint = [singleTap locationInView:self];
     [bezierPath_ moveToPoint:tapPoint];
     [bezierPath_ addLineToPoint:tapPoint];

     [self setNeedsDisplay]; 
}
person mirror    schedule 04.09.2013