CoreAnimation中還有一個很是重要的類:CATransaction事物類,這個能夠同時設置多個layer層的動畫效果。能夠經過隱式和顯式兩種方式來進行動畫操做。安全
對layer層的屬性操做,都會造成隱式動畫,要使用隱式動畫,須要關閉layer層的animation動畫屬性,使用下面的方法:多線程
//關閉animation動畫效果,開啓隱式動畫 + (BOOL)disableActions; + (void)setDisableActions:(BOOL)flag;
CATransaction用類方式經過設置key-value來進行動畫的屬性設置:動畫
+ (nullable id)valueForKey:(NSString *)key; + (void)setValue:(nullable id)anObject forKey:(NSString *)key;
支持的key值以下:spa
//設置動畫持續時間 NSString * const kCATransactionAnimationDuration; //設置停用animation類動畫 NSString * const kCATransactionDisableActions; //設置動畫時序效果 NSString * const kCATransactionAnimationTimingFunction; //設置動畫完成後的回調 NSString * const kCATransactionCompletionBlock;
除了隱式的展現動畫外,也能夠顯式的經過調用CATransaction的相關方法進行顯示的提交動畫:線程
//動畫開始 + (void)begin; //提交動畫 + (void)commit; //當即進行動畫渲染 通常不需調用 + (void)flush; //下面這兩個方法用於動畫事物的加鎖與解鎖 在多線程動畫中,保證修改屬性的安全 + (void)lock; + (void)unlock;
示例以下:code
[CATransaction begin]; [CATransaction setValue:@1 forKey:kCATransactionAnimationDuration]; layer.backgroundColor = [UIColor blueColor].CGColor; [CATransaction commit];
專一技術,熱愛生活,交流技術,也作朋友。事務
——琿少 QQ羣:203317592開發