iOS - вращение UIImageView на основе ориентации X, Y - PullRequest
0 голосов
/ 01 ноября 2011

Я подклассифицировал UIView как объект-аватар, который содержит значок (UIImageView), имя (UILabel) и идентификатор (UILabel).В зависимости от ориентации X, Y координат, я хочу, чтобы значок вращался.Например, скажем, что direction.X = 1, а direction.Y = 1 - угол 45 градусов.X и Y могут быть любыми значениями от -1 до 1.

Я не уверен, как они рассчитываются математически, как API-интерфейс Cocoa требует этого.Есть идеи с чего начать?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2011

для плавности я добавил анимацию:

- (void)rotateView:(UIView *)view withDuration:(NSTimeInterval)duration andRadians:(CGFloat)radians
{
    // Setup the animation
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:duration];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    [UIView setAnimationBeginsFromCurrentState:YES];

    // The transform matrix
    CGAffineTransform transform = CGAffineTransformMakeRotation(radians);
    view.transform = transform;

    // Commit the changes
    [UIView commitAnimations];

}

РЕДАКТИРОВАТЬ:

для других углов вам нужно создать собственную матрицу вращения.

Как вращениеМатрица работает

Читать здесь как создать пользовательское аффинное преобразование в Objective-c

Надеюсь, это поможет.

0 голосов
/ 01 ноября 2011

Вам необходимо изучить тригонометрические функции, в частности acos и asin.

Эта статья может быть полезна.

...