我有一個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動畫屬性更改
- 3. 更改自定義屬性時動畫CALayer
- 4. 動畫CALayer的shadowPath屬性
- 5. 更改CALayer核心動畫
- 6. CALayer:更新內置動畫屬性的自定義動畫屬性
- 7. 如何更改CALayer的默認動畫時間?
- 8. jquery動畫屬性更改
- 9. 動畫自定義CALayer屬性
- 10. CALayer自定義屬性動畫與Xamarin
- 11. CALayer動畫與框架更改?
- 12. 更改時間屬性
- 13. NSView更改屬性動畫的類型
- 14. 以固定時間間隔更改內容的動畫延遲屬性
- 15. 在CALayer上動畫「轉換」屬性時進行抗鋸齒?
- 16. 同時對CALayer屬性動畫數量有合理預期?
- 17. 停止動畫後更改css屬性
- 18. WPF MVVM屬性更改動畫
- 19. QML動畫可見屬性更改
- 20. 更改屬性當懸停與動畫
- 21. 動畫圖像屬性更改
- 22. CALayer的動畫
- 23. 如何在動畫之間更改TextBlock的Text屬性?
- 24. 自定義屬性更改時重繪自定義CALayer子類
- 25. 如何在ViewModel屬性更改時啓動動畫?
- 26. 核心動畫 - 修改動畫屬性
- 27. 如何在更改UIView的transform屬性時禁用動畫?
- 28. 更改填充屬性時動畫矩形的顏色
- 29. 動畫CALayer anchorPoint
- 30. 動畫CALayer
我從哪裏獲得'CATransaction'對象? – 2016-07-09 18:35:40
'''CATransaction'''是一個類。 'setAnimationDuration:seconds'''是一個類方法。在這種情況下,它設置當前交易的持續時間。 – 2016-07-11 04:11:20
謝謝,我現在明白了。 – 2016-07-11 12:05:53