Кварц 2D - получить градусы вращения из свойства преобразования? - PullRequest
0 голосов
/ 29 апреля 2010

У меня есть некоторый UIView с несколькими пользовательскими подпредставлениями.Пользователь может перемещать и вращать подпредставления.Я использую атрибут преобразования UIView для достижения этой цели.Я хочу сохранить «документ», чтобы потом его воссоздать.

В настоящее время я записываю атрибут transform в файл вместе с некоторыми другими данными.Но атрибут transform установлен на 6 чисел, вместо этого я хотел бы каким-то образом получить степени поворота, которые сделал пользователь, и сохранить это.создал преобразование?Очевидно, что когда пользователь перемещал объект по экрану, было выполнено много небольших преобразований.

Ответы [ 2 ]

2 голосов
/ 04 мая 2010

Существует более простой способ, чем даже математика, на которую указывает Люциус. Вы можете использовать вспомогательный путь ключа, который обеспечивает Core Animation, чтобы извлечь текущее вращение заднего слоя UIView:

CGFloat rotationAngle =  [[view.layer valueForKeyPath:@"transform.rotation.z"] floatValue];

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

0 голосов
/ 30 апреля 2010

Да, читайте Матрица преобразования для аффинного преобразования . Таким образом, вам нужно выяснить квадрант преобразования (в каком 90-градусном сечении круга он находится) и взять обратную величину sin (), которая является cosecant (), и обратную величину cos () является секущей (), a и c матрицы. Я сам этого не делал, но это кажется довольно простым.

...