2013-03-23 22 views
3

我正在嘗試動態化圖層,以便在大約0.2秒內不透明度從0變爲1,將不透明度保持爲1秒,然後將不透明度恢復爲0.我嘗試使用關鍵時間做到這一點,但我無法做到。如何在CAKeyFrameAnimation中使用關鍵時間來動畫化圖層的不透明度?

CAKeyframeAnimation *opacityLabel = [CAKeyframeAnimation animationWithKeyPath: @"opacity"]; 

// 0.2 seconds fade in, 1 second hold, 0.2 seconds fade out 
[opacityLabel setDuration: 1.4]; 
[opacityLabel setDelegate: self]; 
[opacityLabel setValue: @"countLabel" forKey: @"verify"]; 
[opacityLabel setValues: [NSArray arrayWithObjects: [NSNumber numberWithFloat: 1.0], [NSNumber numberWithFloat: 1.0], [NSNumber numberWithFloat: 0], nil]]; 
[opacityLabel setKeyTimes: [NSArray arrayWithObjects: [NSNumber numberWithFloat: 0.2], [NSNumber numberWithFloat: 1.2], [NSNumber numberWithFloat: 1.4], nil]]; 

[[tomorrowCountLabel layer] addAnimation: opacityLabel forKey: @"opacityUp"]; 

回答

4

你快到了。關鍵時刻應該是0到1之間的值。您可以將它們視爲百分比。此外,您的動畫應該從不透明度0開始。因此,您應該更改以下兩行:

opacityLabel.values = @[@0, @1, @1, @0]; 
opacityLabel.keyTimes = @[@0, @(0.2/1.4), @(1.2/1.4), @1]; 
+0

@aLevelOfInderection謝謝! – bbraunj 2013-04-14 18:52:37

+0

如果這對你有用,不要忘記接受答案。 – aLevelOfIndirection 2013-04-14 18:56:44

相關問題