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]; в функции (селекторе) это должно работать.   -  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