0
我通过构建多个CALayer,将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张图像,脏内存的大小太多会导致崩溃。