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張圖像,髒內存的大小太多會導致崩潰。