iOS中CoreAnimation的一些小問題 animationDidStop確認哪個動畫結束 和 連續animation之間的動畫不連續閃現
阿新 • • 發佈:2019-01-23
最近專案需要我來實現一些UILabel UIView等的動畫效果。
專案中遇到了兩個比較基礎的問題,一個問題是如何在設定了動畫的delegate為自己後,在animationDidStop中確認是哪一個動畫的技術,好在對應的動畫結束後開始新的動畫。晚上的問題千篇一律的都是下面這樣。Ref: http://bbs.csdn.net/topics/390946417
//設定動畫的delegate為自己 //新增動畫時新增key [self.layer addAnimation:myAnimation forKey:@"key"]; //在動畫的回撥中通過key,判斷是哪個animation - (void) animationDidStop:(CAAnimation *)anim finished:(BOOL)flag { if (anim == [self.layer animationForKey:@"key"]) { } }
其中自己遇到的問題是animationForKey方法找不到對應的animation來比較。其實問題還有一個關鍵點是需要設定自己的animation.removedOnCompletion,預設值為YES。具體程式碼如下面
//保證這個animation結束後不要被移除出layer
myAnimation.removedOnCompletion = NO;
這樣才能通過“[self.layer animationForKey:@“key”];”查詢到對應key的animation。
另一個問題是一系列動畫連續播放中間有閃現畫面,不連續。
這個問題需要設定一下
fillMode決定了當前物件在非active時間段的行為。Ref: http://my.oschina.net/aofe/blog/270412myAnimation.fillMode = kCAFillModeForwards;
後續還有問題繼續更新!