1. 程式人生 > >iOS中CoreAnimation的一些小問題 animationDidStop確認哪個動畫結束 和 連續animation之間的動畫不連續閃現

iOS中CoreAnimation的一些小問題 animationDidStop確認哪個動畫結束 和 連續animation之間的動畫不連續閃現

最近專案需要我來實現一些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。

另一個問題是一系列動畫連續播放中間有閃現畫面,不連續。

這個問題需要設定一下

myAnimation.fillMode = kCAFillModeForwards;
fillMode決定了當前物件在非active時間段的行為。Ref: http://my.oschina.net/aofe/blog/270412

後續還有問題繼續更新!