Как получить решение для остановки / возобновления работы CABasicAnimation?

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

7
задан Cœur 2 August 2017 в 16:19
поделиться