2013-03-15 2 views
0

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

[window addSubview:splashView]; 
    [window bringSubviewToFront:splashView]; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:2.0]; 

    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(startupAnimationDone:finished:context:)]; 
    splashView.frame = CGRectMake(160, 284, 0, 0); 
    [splashView.layer setValue:[NSNumber numberWithInt:-360] 
         forKeyPath:@"transform.rotation.z"]; 

    [UIView commitAnimations]; 
+0

Вы хотите повернуть картинку на 360 °? – Tricertops

+0

Я играю с точно так же, но думаю, он заставляет его вращаться полностью, по крайней мере, дважды, пока он сокращается. – user717452

ответ

1

Для вращения в определенном направлении более чем на 360 ° использовать CAKeyframeAnimation. Там вы можете установить не только конечное значение, но и некоторые промежуточные значения.

// consider this to be pseudo code 
keyFrameAnimation.values = @[ 90, 180, 270, 360, 450, 540, ... ]; 

У меня нет кода, который бы вам показывал, но это бессрочный способ сделать это.

0

Это потому, что вы проходите градусы в анимацию, когда она хочет радианов. Вот пример того, как сделать преобразование.

float degrees = 90.0f; 
float radians = degrees * (180.0f/M_PI); 
+0

Ok ........... так, где я помещаю это и что я устанавливаю для setValue в моем коде? – user717452

+0

@ user717452 Вы серьезно? –

+0

Я спросил, как сделать что-то вращение по часовой стрелке, и вы дали мне два значения поплавка ни с чем другим. – user717452

1

Или просто используйте M_PI напрямую.

  • M_PI_4 = 45 градусов
  • M_PI_2 = 90 градусов
  • M_PI = 180 градусов
  • M_PI*2 = 360 градусов

Вы также можете установить ваши преобразования более легко.

// set transform 
splashView.layer.transform = CATransform3DMakeRotation(-M_PI*2, 0, 0, 1); 

вместо

[splashView.layer setValue:[NSNumber numberWithInt:-360] 
       forKeyPath:@"transform.rotation.z"]; 
+0

Эта строка кода просто сделала вид сжатым без какого-либо вращения. – user717452

+0

, конечно, вам нужно поместить его в блок анимации ... – calimarkus

Смежные вопросы