Я использую 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 не равно нулю, вызываются методы viewWillDisappear и viewWillAppear. Но анимация не возобновляется. Я что-то не так или что-то упустил?