根據(jù)項(xiàng)目需求,需要完成一個(gè)簡單地點(diǎn)擊圖層漸變的動畫,我想到的是用CABasicAnimation簡單的執(zhí)行下就行啦!
[self.animationLayer addAnimation:animation forKey:@"animation"];
動畫完成后需要做一些處理,于是在CAAnimationDelegate代理方法中:
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
if(flag) {
if([self.animationLayer animationForKey:@"animation"] == anim) {
//處理代碼
}
}
}
那么問題就來了,無論如何,代碼都執(zhí)行不到第二個(gè)if判斷語句,這讓我困惑了許久,于是打印log:
NSLog(@"%@",[self.animationLayer animationForKey:@"animation"] );
果然如我所預(yù)料,打印日志如下:
2017-03-14 14:23:28.622 CWTabBar[2429:93064] (null)
怎么就為空呢?郁悶了半天.最后Google半天,看來還是平時(shí)動畫寫的少,對此的理解還不太深入.
其實(shí)問題關(guān)鍵點(diǎn)是需要設(shè)置自己的animation.removedOnCompletion,默認(rèn)值為YES切蟋。具體代碼如下面:
//保證這個(gè)animation結(jié)束后不要被移除出layer
animation.removedOnCompletion = NO;
這樣才能通過“[layer animationForKey:@“key”];”查找到對應(yīng)key的animation岖沛。
另一個(gè)問題是一系列動畫連續(xù)播放中間有閃現(xiàn)畫面昧旨,不連續(xù)纠永。
這個(gè)問題需要設(shè)置一下
myAnimation.fillMode = kCAFillModeForwards;
//fillMode決定了當(dāng)前對象在非active時(shí)間段的行為