Нужна помощь с перемещением UIImageViews по кругу с помощью касания - PullRequest
0 голосов
/ 19 июля 2011

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

На самом деле я пока мало что сделал с точками вращения, но вот мой код:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch* touch = [touches anyObject];
    CGPoint point = [touch locationInView:graph];
    if (CGRectContainsPoint(moveDot.frame, point)) {
        moveDotIsTouched = YES;
    }
    if (CGRectContainsPoint(rotateDot1.frame, point)) {
        rotateDot1IsTouched = YES;
    }
    if (CGRectContainsPoint(rotateDot2.frame, point)) {
        rotateDot2IsTouched = YES;
    }
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch* touch = [touches anyObject];
    CGPoint point = [touch locationInView:graph];
    if (moveDotIsTouched) {
        if ((point.y > 0) && (point.y < 704))
        {
            if (point.y < 64) {rotateDot1.hidden = YES;}
            else {rotateDot1.hidden = NO;}
            if (point.y > 640) {rotateDot2.hidden = YES;}
            else {rotateDot2.hidden = NO;}
            moveDot.center = CGPointMake(moveDot.center.x, point.y);
            rotateDot1.center = CGPointMake(moveDot.center.x+64, moveDot.center.y-64);
            rotateDot2.center = CGPointMake(moveDot.center.x-64, moveDot.center.y+64);
            graph.base = -(point.y)/32 + 11;
            if (graph.base < 0) {[functionField setText:[NSString stringWithFormat:@"y = %.2fx %.2f", graph.slope, graph.base]];}
            else if (graph.base > 0) {[functionField setText:[NSString stringWithFormat:@"y = %.2fx + %.2f", graph.slope, graph.base]];}
            else {[functionField setText:[NSString stringWithFormat:@"y = %.2fx", graph.slope]];}
            [yintField setText:[NSString stringWithFormat:@"%.2f", graph.base]];
            [self changeTable];
        }
    }
    [graph setNeedsDisplay];
}

Числа, связанные с позицией точек, измеряются в пикселях.Единственный способ, которым я действительно могу думать о вращении внешних точек, - это вычисление радиуса и проверка того, что точки находятся в пределах радиуса, но мне интересно, нет ли чего-то более простого, чем это.Кто-нибудь знает простой способ перемещения UIImageView по кругу?

1 Ответ

1 голос
/ 19 июля 2011

KTOneFingerRotationGestureRecognizer - это пользовательский UIGestureRecognizer для выполнения вращений одним пальцем в приложениях iOS. Он отслеживает движение пальцев вокруг центральной точки. Я не знаю, если это именно то, что вы хотите, но это может указывать вам в правильном направлении.

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