У меня есть 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. SwipeRefreshLayout - изменение времени анимации
- 4. CALayer transform при анимации
- 5. изменение типа и времени анимации
- 6. Изображение Изменение CALayer Core Animation
- 7. Swift: Ширина CALayer после анимации
- 8. Как изменить направление анимации CALayer
- 9. Каков наилучший способ скрыть CALayer (без анимации)?
- 10. Как изменить цвет CALayer во время анимации
- 11. Изменение времени анимации JavaFX (Timeline + Interpolator)
- 12. Анимация пользовательских свойств CALayer внутри CATransaction
- 13. Animate CALayer изменение границы
- 14. Изменение времени анимации CSS3 с переходом
- 15. Изменение свойств класса время от времени
- 16. Изменение значения для анимации
- 17. Приостановка анимации CALayer с анимацией с задержкой
- 18. IOS обновление CALayer в анимации блока UIView
- 19. Как найти позицию CAlayer во время анимации?
- 20. Как удалить CALayer при завершении анимации?
- 21. Функция анимации подкласса CALayer не анимируется
- 22. Как управлять CALayer анимации по всей иерархии
- 23. Плавная анимация при анимации shadowPath CALayer в
- 24. CALayer Shadows исчезает во время анимации UIView
- 25. Ошибка в анимации свойств
- 26. Подкласс CALayer, не оживляющий изменения свойств
- 27. CALayer: обратный вызов при завершении анимации?
- 28. Сглаживание при анимации свойства "transform" на CALayer?
- 29. CALayer положение анимации на видео слоя
- 30. Добавить подслой в CALayer без анимации?
Где я могу получить объект 'CATransaction'? –
'' 'CATransaction''' - это класс. '' 'setAnimationDuration: seconds''' - метод класса. В этом случае устанавливается длительность текущей транзакции. –
Спасибо, я понял. –