Я использую CABasicAnimation для вращения UIImageView и не могу возобновить приостановленную анимацию.Анимация начинается в методе viewDidLoad:
UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"MyImage.png"]];
self.myImage = img;
[self.view addSubview:img];
[img release];
CABasicAnimation *fullRotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
fullRotation.fromValue = [NSNumber numberWithFloat:0];
fullRotation.toValue = [NSNumber numberWithFloat:((360*M_PI)/180)];
fullRotation.duration = 10;
fullRotation.repeatCount = LARGE_VAL;
[img.layer addAnimation:fullRotation forKey:@"360"];
Мне нужна непрерывная повторяемая анимация, которая возобновляется, когда вид появляется на экране.Итак, я прочитал этот пост ( здесь ), и реализованное решение предоставило мое яблоко ( решение ) для остановки и возобновления анимации слоя.Итак, я использовал эти методы:
-(void)pauseLayer:(CALayer*)layer{
CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
layer.speed = 0.0;
layer.timeOffset = pausedTime;
}
-(void)resumeLayer:(CALayer*)layer{
CFTimeInterval pausedTime = [layer timeOffset];
layer.speed = 1.0;
layer.timeOffset = 0.0;
layer.beginTime = 0.0;
CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
layer.beginTime = timeSincePause;
}
И я добавил эти методы к viewWillAppear и viewWillDisappear, используя и передавая слой свойства myImage:
-(void)viewWillDisappear:(BOOL)animated{
[self pauseLayer:self.myImage.layer];
}
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self resumeLayer:self.myImage.layer];
}
Изображение выполняет начальный повороткогда вид переходит на экран.Но затем я помещаю некоторый UIViewController на экран, затем возвращаюсь к виду с поворотом изображения.Проблема в том, что поворот изображения не возобновляется, когда вид появляется на экране.Я проверил: мое свойство UIImageView изображения не равно nil, и методы viewWillDisappear и viewWillAppear вызываются.Но анимация не возобновляется.Я что-то не так или что-то упустил?