Попытка использовать Transform для поворота UIView в MonoTouch - PullRequest
4 голосов
/ 26 февраля 2012

У меня определен UIControl, в котором я использовал классы MonoTouch.CoreGraphics для рисования некоторых элементов и поместил UIControl в UIView через AddSubview. Я пытаюсь взять вид и повернуть все это, чтобы имитировать что-то вроде движения минутной или секундной стрелки на часах или циферблате. У меня сложилось впечатление, что я могу сделать это с помощью Transform в UIView.

Имя моего UIView - контейнер. Я пробовал:

    container.Transform.Rotate(-0.78f);

Я также пробовал:

    CGAffineTransform t = CGAffineTransform.MakeIdentity();
    t.Rotate(-0.78f);
    container.Transform = t;

Я также пробовал:

    CGAffineTransform t = CGAffineTransform.MakeRotation(-0.78f);
    container.Transform = t;

Я также пробовал эту и другие комбинации:

    UIView.BeginAnimations("rotate");
    UIView.SetAnimationDuration(0.5);
    container.Transform.Rotate((float)Math.PI);
    UIView.CommitAnimations();

Ничто из вышеперечисленного не повлияло на мой дисплей. Он не вращается и не движется ни малейшего Все посты, связанные с iOS, относятся к CGAffineTransformRotate, но я не могу найти точное совпадение Mono для этого и предполагаю, что это эквивалентно тому, что я делаю выше. Есть ли какой-нибудь другой способ заставить мой взгляд вращаться?

1 Ответ

3 голосов
/ 07 марта 2012

Вы на правильном пути. У меня есть большая игра в разработке, и я делаю это повсеместно в своем коде. Вот самый простой пример, который я могу вам дать:

using MonoTouch.CoreGraphics;

float degrees = 15;
UIView aView = new UIView(new RectangleF(10,10,10,10));
aView.Transform = CGAffineTransform.MakeRotation(3.14159f * degrees / 180f);

Вот и все.

Примеры редки, особенно тот факт, что функция MakeRotation находится в радианах (отсюда использование числа pi для преобразования в градусы).

...