iOS動畫暫停和繼續(xù)

執(zhí)行動畫過程中暫停和繼續(xù)上次動畫的狀態(tài)繼續(xù)執(zhí)行動畫,需要用到layer.speed 和 layer.timeOffset, layer.beginTime.
基本做法就是記錄暫停時的動畫時間着降,然后繼續(xù)動畫時將開始時間設置為上次暫停的時間渐尿。下面是個旋轉動畫的暫停和繼續(xù)吼畏。

-(void)startAnimating
{
    //先判斷是否已設置動畫朦蕴,如果已設置則執(zhí)行動畫
    if([_coverImageView.layer animationForKey:@"rotatianAnimKey"]){
        //如果動畫正在執(zhí)行則返回,避免重復執(zhí)行動畫
        if (_coverImageView.layer.speed == 1) {
            //speed == 1表示動畫正在執(zhí)行
            return;
        }
        //讓動畫執(zhí)行
        _coverImageView.layer.speed = 1;
        
        //取消上次設置的時間
        _coverImageView.layer.beginTime = 0;
        //獲取上次動畫停留的時刻
        CFTimeInterval pauseTime = _coverImageView.layer.timeOffset;
            
        //取消上次記錄的停留時刻
        _coverImageView.layer.timeOffset = 0;
        
        //計算暫停的時間瘟芝,設置相對于父坐標系的開始時間
        _coverImageView.layer.beginTime = [_coverImageView.layer convertTime:CACurrentMediaTime() fromLayer:nil] - pauseTime;
        
    }else{//沒有設置動畫
        
        //添加動畫
        [self addAnimation];
    }
}
-(void)addAnimation
{
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];//rotation.z
    //默認是順時針效果遥昧,若將fromValue和toValue的值互換覆醇,則為逆時針效果
    animation.toValue =   [NSNumber numberWithFloat: M_PI *2];
    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
    animation.duration = 40;//執(zhí)行一周40秒
    animation.autoreverses = NO;
    animation.cumulative = NO;
    animation.removedOnCompletion = NO;
    animation.fillMode = kCAFillModeForwards;
    animation.repeatCount = FLT_MAX; //如果這里想設置成一直自旋轉,可以設置為FLT_MAX炭臭,
    [_coverImageView.layer addAnimation:animation forKey:@"rotatianAnimKey"];
    //添加動畫之后永脓,再讓動畫執(zhí)行,否則可能出現(xiàn)動畫不執(zhí)行的情況
    [self startAnimating];
}

-(void)stopAnimating
{
    //如果動畫已經暫停鞋仍,則返回常摧,避免重復,時間會記錄錯誤威创,造成動畫繼續(xù)后不能連續(xù)落午。
    if (_coverImageView.layer.speed == 0) {
        return;
    }
    //將當前動畫執(zhí)行到的時間保存到layer的timeOffet中
   //一定要先獲取時間再暫停動畫
    CFTimeInterval pausedTime = [_coverImageView.layer convertTime:CACurrentMediaTime() fromLayer:nil];
    //將動畫暫停
    _coverImageView.layer.speed = 0;
    //記錄動畫暫停時間
    _coverImageView.layer.timeOffset = pausedTime;
    
    
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市那婉,隨后出現(xiàn)的幾起案子板甘,更是在濱河造成了極大的恐慌,老刑警劉巖详炬,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡呛谜,警方通過查閱死者的電腦和手機在跳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來隐岛,“玉大人猫妙,你說我怎么就攤上這事【郯迹” “怎么了割坠?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長妒牙。 經常有香客問我彼哼,道長,這世上最難降的妖魔是什么湘今? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任敢朱,我火速辦了婚禮,結果婚禮上摩瞎,老公的妹妹穿的比我還像新娘拴签。我一直安慰自己,他們只是感情好旗们,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布蚓哩。 她就那樣靜靜地躺著,像睡著了一般上渴。 火紅的嫁衣襯著肌膚如雪杖剪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天驰贷,我揣著相機與錄音盛嘿,去河邊找鬼。 笑死括袒,一個胖子當著我的面吹牛次兆,可吹牛的內容都是我干的。 我是一名探鬼主播锹锰,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼芥炭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了恃慧?” 一聲冷哼從身側響起园蝠,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎痢士,沒想到半個月后彪薛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年善延,在試婚紗的時候發(fā)現(xiàn)自己被綠了少态。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡易遣,死狀恐怖彼妻,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情豆茫,我是刑警寧澤侨歉,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站揩魂,受9級特大地震影響幽邓,放射性物質發(fā)生泄漏。R本人自食惡果不足惜肤京,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一颊艳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧忘分,春花似錦棋枕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至肯骇,卻和暖如春窥浪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背笛丙。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工漾脂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人胚鸯。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓骨稿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親姜钳。 傳聞我的和親對象是個殘疾皇子坦冠,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內容

  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復雜哥桥,今天將帶大家一窺iOS動畫全貌辙浑。在這里你可以看...
    F麥子閱讀 5,104評論 5 13
  • 1 CALayer IOS SDK詳解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi閱讀 5,133評論 3 23
  • 在iOS實際開發(fā)中常用的動畫無非是以下四種:UIView動畫,核心動畫拟糕,幀動畫判呕,自定義轉場動畫倦踢。 1.UIView...
    請叫我周小帥閱讀 3,082評論 1 23
  • Core Animation Core Animation,中文翻譯為核心動畫佛玄,它是一組非常強大的動畫處理API硼一,...
    45b645c5912e閱讀 3,016評論 0 21
  • 在iOS實際開發(fā)中常用的動畫無非是以下四種:UIView動畫累澡,核心動畫梦抢,幀動畫,自定義轉場動畫愧哟。下面我們逐個介紹奥吩。...
    4b5cb36a2ee2閱讀 352評論 0 0