2012-01-18 82 views
0

據我所知,簡單地說,Core Animation實際上是通過隨時間推移插值屬性值來工作的。鑑於此,有什麼方法可以將該屬性內插到特定時間?例如,我有動畫iOS核心動畫值插值

animation = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
animation.duration = 1.0; 
animation.fromValue = [NSNumber numberWithFloat:0.0]; 
animation.toValue = [NSNumber numberWithFloat:1.0]; 

當不透明度值也是0.5時,有沒有一種方法可以在例如0.5秒時凍結圖層?

如果沒有辦法與Core Animation做到這一點,是否有任何用於objective-c的補間庫允許這樣做?

回答

-1

您可以使用Core Animation的關鍵幀動畫。

這裏是一個tutoirial

+0

我想要的不是關鍵幀動畫。我想要一個基本的動畫,可以隨意插入到特定的狀態。假設我製作了1秒的基本動畫,並且我希望目標處於與動畫0.3秒後相同的狀態,只需簡單說明「插值到0.3」或其他內容。 – vangoz 2012-01-24 09:59:26

0

有可能通過將其設定凍結動畫的速度屬性爲0可能可以凍結的動畫,然後改變它的BEGINTIME財產或財產timeOffset。

這兩個屬性的文檔是非常糟糕的。看看這個鏈接,更好的信息:

Time warp animation

0

開源INTUAnimationEngine library會做你想要什麼。

它提供了看起來非常像上的UIView基於塊的動畫API的API,這裏的大多數基本型:

// INTUAnimationEngine.h 

// ... 

+ (INTUAnimationID)animateWithDuration:(NSTimeInterval)duration 
           delay:(NSTimeInterval)delay 
          animations:(void (^)(CGFloat percentage))animations 
          completion:(void (^)(BOOL finished))completion; 

// ... 

最重要的區別是,你傳遞給INTUAnimationEngine的animations塊將被執行一次每幀動畫,並且percentage(或progress)值傳遞到animations塊中,每次都反映動畫的當前狀態。

所以你可以很容易地使用它做任何自定義插值,補間或其他你需要做的邏輯。