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

知道問題的原因之后就能用最簡單的方式解決!

比如下面這段代碼用來給imgV來設置轉(zhuǎn)圈動畫

 CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
//        animation.delegate = self;
        // 1秒后執(zhí)行
        animation.beginTime = CACurrentMediaTime() + .25;
        // 持續(xù)時間
        animation.duration = 2.5;
        // 重復次數(shù)
        animation.repeatCount = MAXFLOAT;
        // 起始角度
        animation.fromValue = @(0.0);
        // 終止角度
        animation.toValue = @(2 * M_PI);
        // 添加動畫
        [imgV.layer addAnimation:animation forKey:@"rotate"];

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

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

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

animation.removedOnCompletion = NO;
// 顯然這比網(wǎng)上的做法:監(jiān)聽UIApplicationDidBecomeActiveNotification在通知里面重新開始動畫簡單多了

由此可知是程序進入后臺之后,動畫被認為是Completion了,而這個屬性的值為YES時,動畫被移除了。

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

相關閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復雜,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,262評論 5 13
  • 在iOS實際開發(fā)中常用的動畫無非是以下四種:UIView動畫,核心動畫,幀動畫,自定義轉(zhuǎn)場動畫。 1.UIView...
    請叫我周小帥閱讀 3,313評論 1 23
  • 在iOS實際開發(fā)中常用的動畫無非是以下四種:UIView動畫,核心動畫,幀動畫,自定義轉(zhuǎn)場動畫。下面我們逐個介紹。...
    4b5cb36a2ee2閱讀 433評論 0 0
  • 1 CALayer IOS SDK詳解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi閱讀 5,335評論 3 23
  • 如果想讓事情變得順利,只有靠自己--夏爾·紀堯姆 上一章介紹了隱式動畫的概念。隱式動畫是在iOS平臺創(chuàng)建動態(tài)用戶界...
    夜空下最亮的亮點閱讀 2,090評論 0 1

友情鏈接更多精彩內(nèi)容