XCode повернуть Uibutton по часовой стрелке - PullRequest
8 голосов
/ 19 февраля 2011

Я хочу повернуть UIB-кнопку на 180 градусов по часовой стрелке. Но он всегда вращается против часовой стрелки.

Вот как я пытался:

CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.3];

myButton.transform = CGAffineTransformRotate( myButton.transform, M_PI);

[UIView commitAnimations];

также это:

myButton.transform = CGAffineTransformRotate( myButton.transform, - M_PI);

Что я делаю не так?

Ответы [ 2 ]

16 голосов
/ 01 июля 2011

У меня был похожий опыт, и мое лучшее предположение следующее:

Преобразование вращения приводит к чистому результату, что означает абсолютное вращение. Поскольку вращение -PI и + PI приводит к одинаковому сетевому эффекту (оба на 180 градусов), анимация всегда выбирает направление по умолчанию; который, кажется, против часовой стрелки на iOS.

Если для него установить значение, немного более отрицательное, чем -M_PI, как упоминалось в @kishorebjv, кратчайший путь поворота проходит через положительное направление (переключение анимации по часовой стрелке) Вы можете увидеть этот эффект, используя M_PI + 0.01 или M_PI-0.01. Оба являются положительными числами, но они приводят в разных направлениях.

Более подробное объяснение: Значение: M_PI + 0,01 Направление: против часовой стрелки Обоснование: это переводит на вращение ~ 180.6, таким образом, самое короткое вращение, таким образом, является отрицательным 179,4 градуса.

Value: M_PI-0.01
Direction: Clockwise
Reasoning: This is this translates to a rotation of ~179.4, 
which the shortest rotation is thus a positive 179.4 degrees.

And going back to the value given by kishorebjv
Value: -3.141593
Direction: Clockwise
Reasoning: The value is slightly past -180 degrees, recalling PI is 3.1415926
....so the shortest rotation is a positive 179 degrees
6 голосов
/ 21 февраля 2011

Я удивлен .. Я не знаю, почему так происходит.

Вместо -M_PI дают -3,141593.

Он будет вращаться по часовой стрелке.

На данный момент это быстрое решение. Но, вероятно, не точный ответ на ваш вопрос

...