Как нарисовать динамический прямоугольник на экране в соответствии с событием touchMove на iOS - PullRequest
2 голосов
/ 08 ноября 2011

прямоугольник будет считаться двумя точками, первая точка будет точкой touchBegan, а на touchMove будет второй точкой, прямоугольник будет динамически нарисован в соответствии с движением пальца пользователя (например, когда вы щелкаете одним щелчком мыши на рабочем столе)и двигая мышь вы получите динамически прямоугольник).

Спасибо

Ответы [ 2 ]

3 голосов
/ 08 ноября 2011
  1. Вы должны определить подкласс UIView, например, DrawingView
  2. В DrawingView вы должны реализовать следующие методы:

    Сохранить начальную точку вметод: - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

    Перерисовать прямоугольник здесь - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

    Скрыть прямоугольник (или сохранить его) здесь - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event и здесь - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

Например, в первом методе вы можете определить начальную точку следующим образом:

CGPoint startCornerOfYourRect;
for (UITouch *touch in touches)
{
    startCornerOfYourRect  = [touch locationInView:self];
    break;
}
2 голосов
/ 08 ноября 2011

Хорошо, вот как вы можете нарисовать ваш прямоугольник в touchesMoved (используйте @Nekto touchesBegan для хранения начальной точки вашего прямоугольника).

Давайте предположим, что вы сохранили ссылку на UIView, который мырисунок и назовите его drawnViewtouchesBegan мы устанавливаем источник фрейма для drawnView

Вот touchesMoved:

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent*)event
{
    // We only take care of a single touch
    if ([touches count] == 1)
    {
        UITouch *touch = [touches anyObject];
        // Find the width and height of the rect
        CGRect drawnFrame = drawnView.frame
        drawnFrame.size.width = [touch locationInView:parentView].x - drawnFrame.origin.x
        drawnFrame.size.height = [touch locationInView:parentView].y - drawnFrame.origin.y
        [drawnView setFrame:drawnFrame];
    }
}

Не копируйте, вставьте этот код, я не писалэто в Xcode или что-нибудь.Могут быть ошибки (наверняка).Но я надеюсь, что это может помочь найти ваше решение.И будьте осторожны, я не могу сказать, как он будет себя вести, если вы будете перетаскивать палец вверх или влево (отрицательные значения для высоты и ширины).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...