No estoy seguro de dónde colocaría la animación porque no sé exactamente cómo capturar la imagen (tal vez podría publicar el código), pero aquí está el código para una animación para mostrar la pantalla en blanco:
//Header (.h) file
@property (nonatomic, strong) UIView *whiteScreen;
//Implementation (.m) file
@synthesize whiteScreen;
- (void)viewDidLoad {
self.whiteScreen = [[UIView alloc] initWithFrame:self.view.frame];
self.whiteScreen.layer.opacity = 0.0f;
self.whiteScreen.layer.backgroundColor = [[UIColor whiteColor] CGColor];
[self.view addSubview:self.whiteScreen];
}
-(void)flashScreen {
CAKeyframeAnimation *opacityAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
NSArray *animationValues = @[ @0.8f, @0.0f ];
NSArray *animationTimes = @[ @0.3f, @1.0f ];
id timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
NSArray *animationTimingFunctions = @[ timingFunction, timingFunction ];
[opacityAnimation setValues:animationValues];
[opacityAnimation setKeyTimes:animationTimes];
[opacityAnimation setTimingFunctions:animationTimingFunctions];
opacityAnimation.fillMode = kCAFillModeForwards;
opacityAnimation.removedOnCompletion = YES;
opacityAnimation.duration = 0.4;
[self.whiteScreen.layer addAnimation:opacityAnimation forKey:@"animation"];
}
También ha preguntado cómo controlar la duración del fadeout. Puede hacer esto ajustando los valores en la matriz animationTimes
. Si no está familiarizado con el funcionamiento de CAKeyframeAnimations
, aquí está el resumen más rápido. La duración total de la animación está controlada por el opacityAnimation.duration = 0.4
. Esto hace que la animación tenga 0,4 segundos de duración. Ahora en lo que animationTimes
hace. Cada valor en la matriz es un número entre 0.0 y 1.0 y corresponde a un elemento en la matriz 'animationValues'. El valor en la matriz de tiempos define la duración del valor del fotograma clave correspondiente como una fracción de la duración total de la animación.
Por ejemplo, en la animación anterior, la matriz de tiempos contiene los valores 0,3 y 1,0, que corresponden a los valores 0,8 y 0,0. La duración total es de 0,4, por lo que significa que la vista whiteScreen que tiene su opacidad inicialmente a 0,0, toma
0.4 * 0.3 = 0.12 seconds.
para aumentar la opacidad a 0,8. El segundo valor, 0.0, hace que la capa vuelva a ser transparente. Esto ocupa el resto del tiempo (0.4 - 0.12 = 0.28 segundos).