Вопрос

Я хочу разрешить пользователю рисовать подпись на экране 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', я могу получить только одну точку касания.

Это было полезно?

Решение

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top