溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

核心動畫的接觸點滴(二)

發布時間:2020-08-08 12:33:08 來源:網絡 閱讀:250 作者:Jacksun2Coshine 欄目:開發技術

        本篇記錄核心動畫中基礎動畫的使用:

一、簡單介紹

    CAPropertyAnimation的子類

    屬性解析:

    fromValue:keyPath相應屬性的初始值

    toValue:keyPath相應屬性的結束值

    隨著動畫的進行,在長度為duration的持續時間內,keyPath相應屬性的值從fromValue漸漸地變為toValue

    如果fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在動畫執行完畢后,圖層會保持顯示動畫執行        后的狀態。但在實質上,圖層的屬性值還是動畫執行前的初始值,并沒有真正被改變。

    比如,CALayer的position初始值為(0,0),CABasicAnimation的fromValue為(10,10),toValue為(100,100),雖然動        畫執行完畢后圖層保持在(100,100)這個位置,實質上圖層的position還是為(0,0)

二、平移動畫

//1.創建核心動畫38     
CABasicAnimation *anima=[CABasicAnimation animation];    
 
//1.1告訴系統要執行什么樣的動畫    
anima.keyPath=@"position";
     
//設置通過動畫,將layer從哪兒移動到哪兒     
anima.fromValue=[NSValue valueWithCGPoint:CGPointMake(0, 0)];     
anima.toValue=[NSValue valueWithCGPoint:CGPointMake(200, 300)];  
      
//1.2設置動畫執行完畢之后不刪除動畫    
anima.removedOnCompletion=NO;  
  
//1.3設置保存動畫的最新狀態50    
anima.fillMode=kCAFillModeForwards;
     
//2.添加核心動畫到layer
[self.myLayer addAnimation:anima forKey:nil];

byValue和toValue的區別,前者是在當前的位置上增加多少,后者是到指定的位置。


在上面的代碼中加上anima.delegate = self;即可

使用代理監聽動畫的執行過程(delegate)

//開始執行動畫時調用
-(void)animationDidStart:(CAAnimation *)anim 
{ 

    NSLog(@"開始執行動畫"); 

} 
    
//動畫執行完畢后調用
-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{

   //動畫執行完畢,打印執行完畢后的position值    
   NSString *str=NSStringFromCGPoint(self.myLayer.position);   
   NSLog(@"執行后:%@",str);
   
}


三、縮放動畫

只需要修改以下幾點即可

//1.1告訴系統要執行什么樣的動畫    
anima.keyPath=@"bounds";
     
//設置通過動畫,將layer從多大縮放到多大     
anima.fromValue=[NSValue valueWithCGPoint:CGPointMake(0, 0)];     
anima.toValue=[NSValue valueWithCGPoint:CGPointMake(200, 300)];
//同樣也可以直接食用byValue直接從當前大小縮放到指定大小


四、旋轉動畫

需要修改以下幾點即可

anima.keyPath = @"transform";  //旋轉

//1.2修改屬性,執行動畫(第一個參數為旋轉的角度,后面三個分別是些x,y,z)
   anima.byValue=[NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_4, 0, 0, 1)];



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女