CABasicAnimation 進入后臺后再次進入APP時暫停了

比如下面這段動畫

 CABasicAnimation *musicAnimation = [CABasicAnimation animationWithKeyPath:@"position.y"];
        musicAnimation.duration = 0.35;
        musicAnimation.fromValue = @(30);
    //    musicAnimation.toValue = @(tLayer.frame.size.height - 10);
        musicAnimation.byValue = @(13);
        musicAnimation.autoreverses = YES;
        musicAnimation.repeatCount = MAXFLOAT;
        musicAnimation.removedOnCompletion = NO;
        [tLayer addAnimation:musicAnimation forKey:@"musicAnimation"];

在按下home鍵進入后臺,再次打開時,動畫暫停了,停止在初始的位置。監(jiān)聽系統(tǒng)的UIApplicationDidBecomeActiveNotification ,在通知回調的方法里面打印信息可以推理動畫CABasicAnimation已經被移除了

 [tLayer animationForKey:@"transform.rotation.z"] -> (null) // 獲取到的值為null

查找CABasicAnimation及其父類對象中有對動畫移除相關的的屬性,定位到其中的屬性removedOnCompletion,默認為YES,將這個屬性設置為NO后運行,問題就解決了。

animation.removedOnCompletion = NO;

// 顯然這比網(wǎng)上的做法:監(jiān)聽UIApplicationDidBecomeActiveNotification在通知里面重新開始動畫簡單多了
由此可知是程序進入后臺之后,動畫被認為是Completion了,而這個屬性的值為YES時,動畫被移除了。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容