自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Core Animation教程 關(guān)鍵楨動(dòng)畫實(shí)例操作

移動(dòng)開(kāi)發(fā) iOS
本文介紹的是Core Animation教程 關(guān)鍵楨動(dòng)畫實(shí)例教程,主要講解的是關(guān)于關(guān)鍵幀的一些內(nèi)容,先來(lái)看內(nèi)容。

Core Animation教程 關(guān)鍵楨動(dòng)畫實(shí)例操作是本文要介紹的內(nèi)容,不多說(shuō),我們先來(lái)看內(nèi)容。實(shí)現(xiàn)動(dòng)畫的操作。

Leopard中***的Core Animation技術(shù)可以讓開(kāi)發(fā)者簡(jiǎn)單地開(kāi)發(fā)超酷的用戶界面。想想iPhone為什么這么受歡迎,因?yàn)樗锩缘挠脩艚缑婧陀脩趔w驗(yàn),可以讓人愛(ài)不釋手。在本站之前的文章里,我們介紹過(guò)一些關(guān)于Core Animation開(kāi)發(fā)方面的文章,但是從來(lái)沒(méi)有介紹過(guò)關(guān)于關(guān)鍵楨動(dòng)畫方面的內(nèi)容。

本文通過(guò)一個(gè)例子講解Core Animation關(guān)鍵楨動(dòng)畫方面的基本知識(shí),例子很清晰易懂。建議您有一定Cocoa知識(shí)以及掌握初步的Core Animation概念,那么通過(guò)本文您會(huì)了解更多關(guān)于Core Animation的知識(shí)
 
我最近進(jìn)行了一些關(guān)于關(guān)鍵楨動(dòng)畫方面的研究,感覺(jué)不錯(cuò)。關(guān)鍵楨動(dòng)畫其實(shí)是一個(gè)很酷的東西,因?yàn)樗鼈儠?huì)在你創(chuàng)建的層進(jìn)行動(dòng)作時(shí)給你提供更加精確的控制。基本動(dòng)畫在“開(kāi)始”和“結(jié)束”點(diǎn)之間進(jìn)行線性插值,在很多情況下,你都可以使用基本動(dòng)畫。但是有時(shí)候,如果你希望進(jìn)行一些不一樣或者更復(fù)雜的動(dòng)畫時(shí),基本動(dòng)畫就不夠用了。本文介紹的關(guān)鍵楨動(dòng)畫可以允許你在動(dòng)畫的過(guò)程中進(jìn)行精確控制。
 
與基本動(dòng)畫進(jìn)行線性插值不同,關(guān)鍵楨動(dòng)畫允許你在特定時(shí)間指定不同的數(shù)值,這樣你可以在動(dòng)畫的全過(guò)程控制動(dòng)畫的展示和動(dòng)作。
 
自從發(fā)明手繪電影以來(lái),關(guān)鍵楨就在動(dòng)畫中起到了一定作用。一些資深的藝術(shù)家會(huì)針對(duì)一個(gè)場(chǎng)景畫不同的關(guān)鍵楨,而一些剛?cè)胄械乃囆g(shù)家卻會(huì)填滿每一楨,以便使動(dòng)畫看起來(lái)更平滑。(有時(shí)候這個(gè)過(guò)程叫做tweening:兩者之間的動(dòng)畫)。Core Animation的關(guān)鍵楨動(dòng)畫可以幫我們實(shí)現(xiàn)在關(guān)鍵楨之間的填充,我們只需要指定哪個(gè)是關(guān)鍵楨,系統(tǒng)會(huì)自動(dòng)幫我們生成動(dòng)畫。
 
另外一個(gè)很酷的東西是,關(guān)鍵楨動(dòng)畫同樣可以完成任何基本動(dòng)畫能夠完成的動(dòng)作。特別是點(diǎn)、大小或是矩形。比如如果我們希望讓一個(gè)層的不透明度顯示為一個(gè)動(dòng)畫,我們可以指定一些不同的數(shù)值(比如:0.25, 0.50, 0.75),然后在動(dòng)畫的過(guò)程的不同時(shí)間中逐漸變化。
 
再一個(gè)真的很酷的方面,我們不光可以使用離散數(shù)值,更可以使用CGPath去指定關(guān)鍵楨動(dòng)畫的值。換句話說(shuō),我們不僅僅可以在特定時(shí)間點(diǎn)指定特定的動(dòng)畫值,還可以使用曲線路徑去指定動(dòng)畫的值。舉例說(shuō)明,我們可以將一個(gè)層的不透明度用鐘型曲線表示:開(kāi)始是透明,然后逐漸顯現(xiàn)到某個(gè)特定透明度,再逐漸變?yōu)橥该?。我們還可以用CGPoint和CGSize值的路徑做為動(dòng)畫的行進(jìn)路線。這樣,路徑的x值可以表示橫坐標(biāo)也可以表示寬度,y既可以表示縱坐標(biāo)還可以表示高度。

本例中,我們會(huì)畫一個(gè)在窗口中前后行進(jìn)的層,下面是截圖:

Core Animation教程 關(guān)鍵楨動(dòng)畫實(shí)例操作
 
圖中白色的線是一條貝塞爾曲線,我們創(chuàng)建的層會(huì)通過(guò)這條曲線行進(jìn)。這條曲線畫的很簡(jiǎn)單,這樣我們就可以更容易看清楚細(xì)節(jié)。以下是創(chuàng)建路徑的代碼:

  1. CGMutablePathRef path = CGPathCreateMutable();  
  2. CGPathMoveToPoint(path, NULL, _point1.x + _movieSize.width * 0.5f, _point1.y);  
  3. CGPathAddCurveToPoint(path, NULL, _controlPoint1.x + _movieSize.width * 0.5f,  
  4.                         _controlPoint1.y, _controlPoint2.x - _movieSize.width * 0.5f,   
  5.                         _controlPoint2.y, _point2.x - _movieSize.width * 0.5f, _point2.y);  
  6. if(NULL != _rightBoundKeyframePath) {  
  7.     CGPathRelease(_rightBoundKeyframePath);  
  8. }  
  9. _rightBoundKeyframePath = CGPathCreateCopy(path);  
  10. CGPathRelease(path);    
  11. path = CGPathCreateMutable();  
  12. CGPathMoveToPoint(path, NULL, _point2.x - _movieSize.width * 0.5f, _point2.y);  

就像你看到的一樣,這是一段很明了的Quartz路徑創(chuàng)建代碼。接下來(lái)我們用以下代碼將路徑放入關(guān)鍵楨動(dòng)畫中:

  1. CAKeyframeAnimation *animation = [CAKeyframeAnimation animation];  
  2. animation.duration = 2.0f;  
  3. if(YES == _atLeftEdge) {  
  4.     animation.path = _rightBoundKeyframePath;  
  5.     // the rotation mode causes the layer to rotate along with the slope of the path  
  6.     animation.rotationMode = kCAAnimationRotateAuto;  
  7. }   
  8. else {  
  9.     animation.path = _leftBoundKeyframePath;  
  10.     // since the path is reversed, rotate at 180 degrees off  
  11.     animation.rotationMode = kCAAnimationRotateAutoReverse;  
  12. }  
  13. _movieLayer.actions = [NSDictionary dictionaryWithObject:animation forKey:@"position"]; 

這樣一來(lái),無(wú)論層的位置如何改變,它都會(huì)沿著我們創(chuàng)建的曲線行進(jìn),而不是默認(rèn)的線性插值路徑了。這個(gè)例子中還有一些細(xì)節(jié)并未交代的特別清楚,但是這至少已經(jīng)幫助我們了解如何使用關(guān)鍵楨動(dòng)畫了。

點(diǎn)擊可下載代碼,你可以自己嘗試編譯,希望你喜歡。

小結(jié):Core Animation教程 關(guān)鍵楨動(dòng)畫實(shí)例操作的內(nèi)容介紹完了,希望本文對(duì)你有所幫助。

責(zé)任編輯:zhaolei 來(lái)源: Cocoa China
相關(guān)推薦

2011-07-03 10:05:52

Core Animat

2014-12-31 13:31:31

圖形動(dòng)畫翻頁(yè)

2015-07-27 10:27:32

IOS基礎(chǔ)知識(shí)核心動(dòng)畫

2011-07-03 10:16:45

Core Animat

2011-08-09 17:21:37

2011-07-03 10:12:35

Core Animat

2011-06-29 18:36:59

Qt 動(dòng)畫 狀態(tài)機(jī)

2011-08-16 18:38:23

Core Animat動(dòng)畫

2011-06-13 15:00:00

Cocoa TouchiOS

2011-07-29 09:45:11

iOS 圖形圖像 Core Anima

2014-03-06 13:26:49

動(dòng)畫資源Animation R

2011-08-17 14:27:17

Core AnimatQuartz2D

2015-09-06 10:14:21

swift加載動(dòng)畫實(shí)例教程

2020-12-04 08:40:29

SVG動(dòng)畫元素

2023-04-23 09:01:43

CSS動(dòng)畫合成

2023-04-24 09:23:31

CSS動(dòng)畫合成

2011-07-22 16:37:14

IOS CALayer 動(dòng)畫

2011-07-22 18:20:04

IOS View 動(dòng)畫

2023-01-12 09:40:28

數(shù)字人建模動(dòng)畫

2013-07-03 16:36:35

iOS 7人機(jī)交互UI設(shè)計(jì)Animation動(dòng)畫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)