Я создаю слайд-шоу фотографий, создавая несколько CALayers, назначая cgimage содержимому слоя, а затем добавляя CAAnimations для каждого слоя. Каждый слой отрывается и идет в исходное время & идти после продолжительности (скажем, 3 секунды). Ни одна из анимаций не перекрывается во времени. Наконец, все слои добавляются в AVSynchronizedLayer для воспроизведения с использованием AVPlayer.Использование памяти CAAnimation в случае цепочки
Проблема: Как отключить загрузку изображений в то время, когда выполняется соответствующая анимация? В настоящее время я создаю imageLayer.contents = (id) self.image.CGImage, создавая каждый слой и добавляя к использованию памяти независимо от того, видимо ли это на экране или нет.
Я также попытался установить содержание CALayer анимируя свойство содержимого следующим образом:
CABasicAnimation *contentsAnimation = [CABasicAnimation animationWithKeyPath:@"contents"];
contentsAnimation.beginTime = startTime;
contentsAnimation.duration = CMTimeGetSeconds(self.timeRange.duration);
contentsAnimation.fromValue = (id) self.photoImage.CGImage;
contentsAnimation.toValue = (id) self.photoImage.CGImage;
contentsAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
contentsAnimation.fillMode = kCAFillModeForwards;
contentsAnimation.removedOnCompletion = NO;
[imageLayer addAnimation:contentsAnimation forKey:@"contents"];
Но проблема в том, так как ссылается CGImage, он добавляет к использованию памяти. Если у вас 20 изображений, размер грязной памяти слишком сильно вызывает крушение.