我有一個CALayer來爲其圖像內容的變化設置動畫。現在,我該如何改變這個動畫需要多長時間?更改CALayer屬性的動畫時間
8
A
回答
7
或多或少很簡單。你有一個ivar CALayer *yourLayer
。然後,設置代表和實現委託方法-(id<CAAction>)actionForLayer:forKey:
- (void)awakeFromNib {
yourLayer.delegate = self;
yourLayer.name = @"yourLayer";
}
- (id <CAAction>)actionForLayer:(CALayer *)layer forKey:(NSString *)event {
if([layer.name isEqualToString yourLayer.name]) { // Check for right layer
CABasicAnimation *ani = [CABasicAnimation animationWithKeyPath:event]; // Default Animation for 'event'
ani.duration = .5; // Your custom animation duration
return ani;
} else return nil; // Default Animation
}
10
一種不同的方式來做到這一點:
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:2.5f] forKey:kCATransactionAnimationDuration];
//Perform CALayer actions, such as changing the layer contents, position, whatever.
aCALayerObject.contents = [self newCALayerContents];
[CATransaction commit];
該代碼將動畫的CALayer的的內容的變化超過2.5秒。您也可以使用它來完全禁用所有動畫。就像這樣:
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
19
你可以只要致電:
[CATransaction setAnimationDuration:durationSecs]
在-layoutSublayers
或其他任何地方,你修改圖層,並期望他們含蓄動畫。這將影響當前的隱式事務和這一個中的任何子事務。
相關問題
- 1. 觀察CALayer動畫屬性更改
- 2. 動畫CALayer的shadowPath屬性
- 3. 更改CALayer核心動畫
- 4. CALayer自定義屬性動畫與Xamarin
- 5. 動畫自定義CALayer屬性
- 6. 更改時間屬性
- 7. NSView更改屬性動畫的類型
- 8. 以固定時間間隔更改內容的動畫延遲屬性
- 9. 同時對CALayer屬性動畫數量有合理預期?
- 10. 在CALayer上動畫「轉換」屬性時進行抗鋸齒?
- 11. CALayer的動畫
- 12. 如何在ViewModel屬性更改時啓動動畫?
- 13. 動畫CALayer
- 14. 動畫CALayer ShadowOffset
- 15. 動畫CALayer子類的自定義屬性
- 16. 如何爲CALayer的'position'屬性添加隱式動畫?
- 17. 任意對象和屬性的非CALayer動畫框架
- 18. AS3,簡單:從其時間線內更改動畫片段屬性
- 19. 依賴屬性更改時運行動畫
- 20. 觸發屬性更改時故事板動畫未完成
- 21. 更改動畫持續時間
- 22. 在時間更改css屬性
- 23. 移動CALayer的動畫?
- 24. 設置/更改文件的ctime或「更改時間」屬性
- 25. 修改時間戳更新對類屬性的任何更改
- 26. 在CALayer中爲自定義屬性設置動畫
- 27. 動態更改JavaFX中的關鍵幀時間屬性
- 28. 如何在動畫過程中更改CALayer的顏色?
- 29. 如何用動畫從左到右更改CALayer的寬度?
- 30. 選擇性覆蓋CALayer隱式動畫
我從哪裏獲得'CATransaction'對象? – 2016-07-09 18:35:40
'''CATransaction'''是一個類。 'setAnimationDuration:seconds'''是一個類方法。在這種情況下,它設置當前交易的持續時間。 – 2016-07-11 04:11:20
謝謝,我現在明白了。 – 2016-07-11 12:05:53