我有一个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