Время анимации изменения для свойств CALayer

У меня есть CALayer для анимации изменения в его содержимых изображения. Теперь, как я могу измениться, сколько времени это берет, чтобы эта анимация произошла?

8
задан Brad Larson 28 August 2010 в 13:41
поделиться

2 ответа

Все более или менее просто. У вас есть ивар CALayer *yourLayer. Затем вы устанавливаете делегата и реализуете метод делегата -(id)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
}
7
ответ дан 3 November 2019 в 12:49
поделиться

Другой способ сделать это:

[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];
10
ответ дан 3 November 2019 в 12:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: