Iphone-Как да завъртите изображението непрекъснато за 30 секунди и да спрете на 180 градуса

Имам това досега. Искам изображението да се завърти за около 30 секунди и да спре и след това да се обърне на другата страна.

редактиране. Променен код. Имам това, но се върти и не спира на 180 градуса. Искам да се завърти няколко пъти и да спре в обратната посока.

       CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];
  animation.duration = 0.60;//animation.duration = 0.60;
  animation.repeatCount = 1;//animation.repeatCount = 1000ˆ

//#warning remove comment brackets below

  animation.keyTimes = [NSArray arrayWithObjects:
                        [NSNumber numberWithFloat:0.0],
                        [NSNumber numberWithFloat:1.0], nil];

  animation.values = [NSArray arrayWithObjects:
                      [NSNumber numberWithFloat:0.0],
                      [NSNumber numberWithFloat:(degrees / 180)*M_PI], nil];

  animation.fillMode = kCAFillModeForwards;

Как мога да спра анимацията, когато изображението все още е завъртяно на 180 градуса.


person user1898829    schedule 06.02.2013    source източник
comment
Изображението е в UIButton.   -  person user1898829    schedule 06.02.2013
comment
Никога не съм използвал анимации за слоеве, но не е ли свойството продължителност, което задавате на 1.1, стойността, която искате да зададете на 30 секунди?   -  person Ricard Pérez del Campo    schedule 06.02.2013
comment
За 30 секунди: след като добавите анимация, използвайте [self performSelector:@selector(funct) withObject:nil afterDelay:30]; и извикайте [yourview.layer removeAllAnimations]; в funct (селектор), това трябва да работи.   -  person Krishna Shanbhag    schedule 06.02.2013


Отговори (1)


Какво ще кажеш

    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
animation.delegate = self;
animation.autoreverses = YES;
animation.repeatDuration = 30;
animation.duration = 1.0;
animation.fromValue = [NSNumber numberWithFloat:-degreeToRadian(180)];
animation.toValue=[NSNumber numberWithFloat:degreeToRadian(180)];
[self.button.layer addAnimation:animation forKey:@"animation"];

след това добавете делегиран метод

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
{
   self.button.transform = CGAffineTransformMakeRotation(degreeToRadian(180));
}

Надявам се, че това е, което искахте.

person Raj    schedule 06.02.2013
comment
Измислих горното, но не спира на 180 градуса. Формулата ми грешна ли е. - person user1898829; 07.02.2013