重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
本篇記錄核心動畫中基礎動畫的使用:
一、簡單介紹
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)];
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。