Как повернуть UIbutton в Xcode + IB? - PullRequest
2 голосов
/ 16 марта 2010

Я пишу iPhone программист, и Я хочу сделать кнопку с поворотом на 180 градусов, я пытаюсь использовать сенсорную панель мультитач для поворота кнопки UI, но она не удалась, как мне это сделать? или мне нужно сделать это по коду?

Ответы [ 3 ]

22 голосов
/ 16 марта 2010

Вы не можете сделать это из Interface Builder. Вы должны повернуть его из своего кода, используя свойство transform вашего UIButton, которое является структурой CGAffineTransform. Вы можете использовать CGAffineTransformMakeRotation (), чтобы установить его.

myButton.transform = CGAffineTransformMakeRotation( ( 180 * M_PI ) / 180 );

Первые 180 в коде - это угол в градусах. Операция преобразует его в радианы.

5 голосов
/ 21 июля 2011

Я хотел сделать то же самое - повернуть кнопку на 180 градусов при нажатии - но сделать это с помощью анимации. Ответ Neurofluxation делает поворот на 180 градусов с анимацией, но он не является постоянным. Ответ Macmade делает поворот на 180 градусов, но не делает это с анимацией. Поэтому, если вы похожи на меня и хотите сделать поворот на 180 градусов с анимацией, используйте этот код:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.35];

// (180 * M_PI) / 180 == M_PI, so just use M_PI
myButton.transform = CGAffineTransformMakeRotation(M_PI);

[UIView commitAnimations];

Также, если вы хотите повернуть обратно в начальное положение (то есть вращение на 0 градусов), поместите следующее между анимационным кодом, как показано выше:

myButton.transform = CGAffineTransformMakeRotation(0);

Что касается варианта использования такой кнопки, кнопка Evernote «Показать / скрыть клавиатуру» выполняет действительно плавное вращение на 180 градусов, которое можно воссоздать с помощью приведенного выше кода.

1 голос
/ 16 марта 2010

Ну, поехали:

CABasicAnimation *halfTurn;
halfTurn = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
halfTurn.fromValue = [NSNumber numberWithFloat:0];
halfTurn.toValue = [NSNumber numberWithFloat:((360*M_PI)/180)];
halfTurn.duration = 0.5;
halfTurn.repeatCount = 1;
[myButton addAnimation:halfTurn forKey:@"180"];

Надеюсь, это поможет ... Хотя я печатаю с моего компьютера, а не с Mac - так что я надеюсь, что это правильно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...