поверните изображение касанием - PullRequest
1 голос
/ 03 марта 2011

Я делаю приложение, которое устанавливает таймер сна с часами . В основном это часы с одной стрелкой, которые пользователь может перемещать для установки своего времени сна. Я пытался повернуть изображение с помощью uitouch но он вращается от середины, но я хочу, чтобы он вращался от кончика. Во-вторых, я хочу, чтобы изображение вращалось только тогда, когда пользователь касается кончика изображения, но в моем проекте изображение также вращается, когда пользователь касается любогочасть экрана. Также я хочу повернуть изображение в обоих направлениях, но в моем проекте оно перемещается только по часовой стрелке благодаря этому методу

image.transform = CGAffineTransformRotate(image.transform, degreesToRadians(1));

Может кто-нибудь дать мне подсказки или решения окак это можно сделать?

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    //

        touch = [[event allTouches] anyObject];
        touchLocation = [touch locationInView:touch.view];

        NSLog(@"began");

    }


    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
        // get touch event

        [image.layer setAnchorPoint:CGPointMake(0.0,0.0)];



        if ([touch view] == image) {
            image.transform = CGAffineTransformRotate(image.transform, degreesToRadians(1));

        //image.center = touchLocation;
    }

      }

    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
        NSLog(@"end");



    }

Ответы [ 3 ]

2 голосов
/ 08 октября 2012

Подробно вы можете настроить rotateView, затем:

1: в методе делегата "touchesBegan" получите initialPoint для finger и initialAngle.

2: во время "touchesMoved", получите новую точку пальца:

CGPoint newPoint = [[touches anyObject] locationInView:self];
[self pushTouchPoint:thePoint date:[NSDate date]];
double angleDif = [self angleForPoint:newPoint] - [self angleForPoint:initialPoint];
self.angle = initialAngle + angleDif;
[[imageView layer] setTransform:CATransform3DMakeRotation(angle, 0, 0, 1)];

3: Наконец, в "touchesEnded" вы можете вычислить конечную AngularVelocity.

Если что-то не так, для более подробной информации вы можете написать обратно.

0 голосов
/ 03 марта 2011

Чтобы повернуть его другим способом, вы просто используете:

image.transform = CGAffineTransformRotate(image.transform, degreesToRadians(1));

И чтобы повернуть форму, вы должны использовать setAnchorPoint (как вы использовали в своем коде, но я думаю, что вы должны сделать: [image setAnchorPoint]).

подробнее по теме: setAnchorPoint for UIImage?

0 голосов
/ 03 марта 2011

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

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

Также я хочу повернуть изображение в обоих направлениях, но в моем проекте оно перемещается только по часовой стрелке благодаря этому методу

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

...