核心動畫允許自定義動畫通過實現您的CALayer基於類的actionForKey方法:如何在Core Animation中使用onOrderOut的自定義動畫?
- (id<CAAction>)actionForKey:(NSString *)key {
// Custom animations
return [super actionForKey:key];
}
然後我就可以創建一個動畫,並返回其爲onOrderIn
動作(即當圖層添加到另一層) 。這工作得很好。如果我對onOrderOut
執行相同操作(即,該層從其超級層上移除),則返回的動畫將被忽略,並且會應用默認動畫。
我的目標是,以放大層(onOrderIn
)和出(onOrderOut
):
- (id<CAAction>)actionForKey:(NSString *)key {
if ([key isEqualToString:@"onOrderIn"] || [key isEqualToString:@"onOrderOut"]) {
CABasicAnimation *a = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
a.duration = 0.25;
a.removedOnCompletion = NO;
a.fillMode = kCAFillModeBoth;
if ([key isEqualToString:@"onOrderIn"]) {
a.fromValue = [NSNumber numberWithFloat:0.0];
a.toValue = [NSNumber numberWithFloat:1.0];
} else {
a.fromValue = [NSNumber numberWithFloat:1.0];
a.toValue = [NSNumber numberWithFloat:0.0];
}
return a;
}
return [super actionForKey:key];
}
在作品放大,縮小不。相反,使用默認的淡出動畫。
該代碼可能包含一些拼寫錯誤,因爲我在另一臺機器上輸入了該錯誤。
任何人都可以幫忙嗎?
啊,謝謝。我會測試這個,如果我再次需要它,意思是我們用Qt Jambi編寫了一個完全不同版本的軟件。 ;) – Lemming 2009-11-06 22:20:01