Как нарисовать подпись с линиями на экране iPhone? - PullRequest
2 голосов
/ 25 марта 2009

Я хочу, чтобы пользователь рисовал подпись на экране iPhone, поэтому я добавляю подкласс UIView и добавляю некоторый код в его метод touchesMoved.


-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    firstTouch = [touch locationInView:self];

    CGSize mySize = CGSizeMake(5, 5);
    UIGraphicsBeginImageContext(mySize);                                    
    CGContextRef ctx = UIGraphicsGetCurrentContext();                       

    CGContextBeginPath(ctx);                                                
    CGContextSetRGBFillColor(ctx, 1, 0, 0, 1);                              
    CGContextAddRect(ctx, CGRectMake(0, 0, 5, 5));                          
    CGContextFillPath(ctx);                                                 

    UIImage *redRect = UIGraphicsGetImageFromCurrentImageContext();         
    UIGraphicsEndImageContext();                                            

    UIImageView *redRectView = [[UIImageView alloc] initWithImage:redRect]; 
    redRectView.center = CGPointMake(firstTouch.x, firstTouch.y);                               
    [self addSubview:redRectView];                                      

}

Я рисую его маленькими прямоугольниками, и он оказывается точечным. Поскольку это слишком уродливо, я хочу нарисовать подпись с линиями. Но как различить firstTouch и lastTouch? Если я использую только метод touchesMoved, я могу получить только одну точку касания.

Ответы [ 3 ]

3 голосов
/ 25 марта 2009

В соответствии с ссылкой на класс UIResponder вам также потребуется реализовать
– touchesBegan:withEvent: и
– touchesEnded:withEvent:.
После того, как вы реализуете эти методы, вы сможете получить достаточно данных для реализации кривой Безье с указанием пути или другого подходящего решения.

[ edit ] Возможно, лучшим решением было бы получение прикосновений непосредственно от объекта UIEvent, как только ваш контроллер получил
– touchesMoved:withEvent: уведомление. Кроме того, пример кода GLPaint также может оказаться полезным.

2 голосов
/ 30 марта 2009

Поскольку пример кода GLPaint может быть слишком сложным для начинающих, я нахожу этот урок . Для большинства начинающих учиться просто.

0 голосов
/ 30 марта 2009

Имейте в виду, что подпись, написанная одним пальцем, будет отличаться от подписи пишущим инструментом. Возможно, вы захотите переосмыслить, для чего вы используете подпись, и является ли она обязательной для вас.

...