CALayer的隱式動畫和顯式動畫


任何對於CALayer屬性的修改,都是隱式事務,都會有動畫效果.這樣的事務會在run-loop中被提交.

 1 - (void)viewDidLoad {
 2     //初始化一個layer,添加到主視圖
 3     layer=[CALayer layer];
 4     layer.bounds = CGRectMake(0, 0, 200, 200);
 5     layer.position = CGPointMake(160, 250);
 6     layer.backgroundColor = [UIColor redColor].CGColor;
 7     layer.borderColor = [UIColor blackColor].CGColor;
 8     layer.opacity = 1.0f;
 9     [self.view.layer addSublayer:layer];    
10 
11     [super viewDidLoad];
12 }
13 
14 -(IBAction)changeLayerProperty {
15     //設置變化動畫過程是否顯示,默認為YES不顯示
16 
17     [CATransaction setDisableActions:NO];    //  設置是否啟動隱式動畫
18     layer.cornerRadius = (layer.cornerRadius == 0.0f) ? 30.0f : 0.0f;    //   設置圓角
19     layer.opacity = (layer.opacity == 1.0f) ? 0.5f : 1.0f;   // 設置透明度
20 }  

 

顯式事務,通過明確的調用begin,commit來提交動畫

 1     [CATransaction begin];
 2     
 3     //顯式事務默認開啟動畫效果,kCFBooleanTrue關閉
 4     [CATransaction setValue:(id)kCFBooleanFalse forKey:kCATransactionDisableActions];
 5     
 6     //動畫執行時間
 7     [CATransaction setValue:[NSNumber numberWithFloat:5.0f] forKey:kCATransactionAnimationDuration];
 8     
 9     //[CATransaction setAnimationDuration:[NSNumber numberWithFloat:5.0f]];
10     
11     layer.cornerRadius = (layer.cornerRadius == 0.0f) ? 30.0f : 0.0f;
12     layer.opacity = (layer.opacity == 1.0f) ? 0.5f : 1.0f;
13     
14     [CATransaction commit];

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM